diff --git a/src/androidTest/assets/attributes_test_split_change.json b/src/androidTest/assets/attributes_test_split_change.json index 980b0a0fb..69a7aa177 100644 --- a/src/androidTest/assets/attributes_test_split_change.json +++ b/src/androidTest/assets/attributes_test_split_change.json @@ -1,182 +1,187 @@ { - "splits":[ + "ff": { + "splits": [ { - "trafficTypeName":"client", - "name":"workm", - "trafficAllocation":100, - "trafficAllocationSeed":147392224, - "seed":524417105, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"on", - "changeNumber":1602796638344, - "algo":2, - "configurations":{ - - }, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"client", - "attribute":"num_value" - }, - "matcherType":"EQUAL_TO", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":{ - "dataType":"NUMBER", - "value":10 - }, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on_num_10", - "size":100 + "trafficTypeName": "client", + "name": "workm", + "trafficAllocation": 100, + "trafficAllocationSeed": 147392224, + "seed": 524417105, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "on", + "changeNumber": 1602796638344, + "algo": 2, + "configurations": { + }, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": "num_value" }, - { - "treatment":"off", - "size":0 - } - ], - "label":"rule 1" - } - ] - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"client", - "attribute":"str_value" + "matcherType": "EQUAL_TO", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": { + "dataType": "NUMBER", + "value": 10 }, - "matcherType":"MATCHES_STRING", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":"yes" - } - ] - }, - "partitions":[ - { - "treatment":"on_str_yes", - "size":100 + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"rule 2" + "partitions": [ + { + "treatment": "on_num_10", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + } + ], + "label": "rule 1" + } + ] }, { - "trafficTypeName":"client", - "name":"workm1", - "trafficAllocation":100, - "trafficAllocationSeed":147392224, - "seed":524417105, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"on", - "changeNumber":1602796638344, - "algo":2, - "configurations":{ - - }, - "conditions":[ + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"client", - "attribute":"num_value_a" - }, - "matcherType":"EQUAL_TO", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":{ - "dataType":"NUMBER", - "value":20 - }, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on_num_20", - "size":100 - }, - { - "treatment":"off", - "size":0 - } - ], - "label":"rule 3" + "keySelector": { + "trafficType": "client", + "attribute": "str_value" + }, + "matcherType": "MATCHES_STRING", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": "yes" } - ] + ] + }, + "partitions": [ + { + "treatment": "on_str_yes", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + } + ], + "label": "rule 2" }, { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"client", - "attribute":"str_value_a" + "trafficTypeName": "client", + "name": "workm1", + "trafficAllocation": 100, + "trafficAllocationSeed": 147392224, + "seed": 524417105, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "on", + "changeNumber": 1602796638344, + "algo": 2, + "configurations": { + }, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": "num_value_a" }, - "matcherType":"MATCHES_STRING", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":"no" - } - ] - }, - "partitions":[ - { - "treatment":"on_str_no", - "size":100 + "matcherType": "EQUAL_TO", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": { + "dataType": "NUMBER", + "value": 20 + }, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, + "partitions": [ + { + "treatment": "on_num_20", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + } + ], + "label": "rule 3" + } + ] + }, + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ { - "treatment":"off", - "size":0 + "keySelector": { + "trafficType": "client", + "attribute": "str_value_a" + }, + "matcherType": "MATCHES_STRING", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": "no" } - ], - "label":"rule 3" + ] + }, + "partitions": [ + { + "treatment": "on_str_no", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + } + ], + "label": "rule 3" } - ], - "since":1602796638344, - "till":1602796638344 + ], + "since": 1602796638344, + "till": 1602796638344 + }, + "rbs": { + "d": [], + "s": 1602796638341, + "t": 1602796638341 + } } \ No newline at end of file diff --git a/src/androidTest/assets/bucket_split_test.json b/src/androidTest/assets/bucket_split_test.json index 1a9d3e212..f5608b9b7 100644 --- a/src/androidTest/assets/bucket_split_test.json +++ b/src/androidTest/assets/bucket_split_test.json @@ -1,439 +1,446 @@ { - "splits": [ - { - "name": "bucket_test", - "changeNumber": 1506703262916, - "trafficAllocationSeed": -1277047201, - "seed": 1844331483, - "configurations": {}, - "conditions": [ - { - "conditionType": "rollout", - "label": "default rule", - "matcherGroup": { - "matchers": [ - { - "matcherType": "ALL_KEYS", - "keySelector": { - "trafficType": "account" - }, - "negate": false + "ff": { + "splits": [ + { + "name": "bucket_test", + "changeNumber": 1506703262916, + "trafficAllocationSeed": -1277047201, + "seed": 1844331483, + "configurations": {}, + "conditions": [ + { + "conditionType": "rollout", + "label": "default rule", + "matcherGroup": { + "matchers": [ + { + "matcherType": "ALL_KEYS", + "keySelector": { + "trafficType": "account" + }, + "negate": false + } + ], + "combiner": "AND" + }, + "partitions": [ + { + "size": 1, + "treatment": "V1" + }, + { + "size": 1, + "treatment": "V2" + }, + { + "size": 1, + "treatment": "V3" + }, + { + "size": 1, + "treatment": "V4" + }, + { + "size": 1, + "treatment": "V5" + }, + { + "size": 1, + "treatment": "V6" + }, + { + "size": 1, + "treatment": "V7" + }, + { + "size": 1, + "treatment": "V8" + }, + { + "size": 1, + "treatment": "V9" + }, + { + "size": 1, + "treatment": "V10" + }, + { + "size": 1, + "treatment": "V11" + }, + { + "size": 1, + "treatment": "V12" + }, + { + "size": 1, + "treatment": "V13" + }, + { + "size": 1, + "treatment": "V14" + }, + { + "size": 1, + "treatment": "V15" + }, + { + "size": 1, + "treatment": "V16" + }, + { + "size": 1, + "treatment": "V17" + }, + { + "size": 1, + "treatment": "V18" + }, + { + "size": 1, + "treatment": "V19" + }, + { + "size": 1, + "treatment": "V20" + }, + { + "size": 1, + "treatment": "V21" + }, + { + "size": 1, + "treatment": "V22" + }, + { + "size": 1, + "treatment": "V23" + }, + { + "size": 1, + "treatment": "V24" + }, + { + "size": 1, + "treatment": "V25" + }, + { + "size": 1, + "treatment": "V26" + }, + { + "size": 1, + "treatment": "V27" + }, + { + "size": 1, + "treatment": "V28" + }, + { + "size": 1, + "treatment": "V29" + }, + { + "size": 1, + "treatment": "V30" + }, + { + "size": 1, + "treatment": "V31" + }, + { + "size": 1, + "treatment": "V32" + }, + { + "size": 1, + "treatment": "V33" + }, + { + "size": 1, + "treatment": "V34" + }, + { + "size": 1, + "treatment": "V35" + }, + { + "size": 1, + "treatment": "V36" + }, + { + "size": 1, + "treatment": "V37" + }, + { + "size": 1, + "treatment": "V38" + }, + { + "size": 1, + "treatment": "V39" + }, + { + "size": 1, + "treatment": "V40" + }, + { + "size": 1, + "treatment": "V41" + }, + { + "size": 1, + "treatment": "V42" + }, + { + "size": 1, + "treatment": "V43" + }, + { + "size": 1, + "treatment": "V44" + }, + { + "size": 1, + "treatment": "V45" + }, + { + "size": 1, + "treatment": "V46" + }, + { + "size": 1, + "treatment": "V47" + }, + { + "size": 1, + "treatment": "V48" + }, + { + "size": 1, + "treatment": "V49" + }, + { + "size": 1, + "treatment": "V50" + }, + { + "size": 1, + "treatment": "V51" + }, + { + "size": 1, + "treatment": "V52" + }, + { + "size": 1, + "treatment": "V53" + }, + { + "size": 1, + "treatment": "V54" + }, + { + "size": 1, + "treatment": "V55" + }, + { + "size": 1, + "treatment": "V56" + }, + { + "size": 1, + "treatment": "V57" + }, + { + "size": 1, + "treatment": "V58" + }, + { + "size": 1, + "treatment": "V59" + }, + { + "size": 1, + "treatment": "V60" + }, + { + "size": 1, + "treatment": "V61" + }, + { + "size": 1, + "treatment": "V62" + }, + { + "size": 1, + "treatment": "V63" + }, + { + "size": 1, + "treatment": "V64" + }, + { + "size": 1, + "treatment": "V65" + }, + { + "size": 1, + "treatment": "V66" + }, + { + "size": 1, + "treatment": "V67" + }, + { + "size": 1, + "treatment": "V68" + }, + { + "size": 1, + "treatment": "V69" + }, + { + "size": 1, + "treatment": "V70" + }, + { + "size": 1, + "treatment": "V71" + }, + { + "size": 1, + "treatment": "V72" + }, + { + "size": 1, + "treatment": "V73" + }, + { + "size": 1, + "treatment": "V74" + }, + { + "size": 1, + "treatment": "V75" + }, + { + "size": 1, + "treatment": "V76" + }, + { + "size": 1, + "treatment": "V77" + }, + { + "size": 1, + "treatment": "V78" + }, + { + "size": 1, + "treatment": "V79" + }, + { + "size": 1, + "treatment": "V80" + }, + { + "size": 1, + "treatment": "V81" + }, + { + "size": 1, + "treatment": "V82" + }, + { + "size": 1, + "treatment": "V83" + }, + { + "size": 1, + "treatment": "V84" + }, + { + "size": 1, + "treatment": "V85" + }, + { + "size": 1, + "treatment": "V86" + }, + { + "size": 1, + "treatment": "V87" + }, + { + "size": 1, + "treatment": "V88" + }, + { + "size": 1, + "treatment": "V89" + }, + { + "size": 1, + "treatment": "V90" + }, + { + "size": 1, + "treatment": "V91" + }, + { + "size": 1, + "treatment": "V92" + }, + { + "size": 1, + "treatment": "V93" + }, + { + "size": 1, + "treatment": "V94" + }, + { + "size": 1, + "treatment": "V95" + }, + { + "size": 1, + "treatment": "V96" + }, + { + "size": 1, + "treatment": "V97" + }, + { + "size": 1, + "treatment": "V98" + }, + { + "size": 1, + "treatment": "V99" + }, + { + "size": 1, + "treatment": "V100" } - ], - "combiner": "AND" - }, - "partitions": [ - { - "size": 1, - "treatment": "V1" - }, - { - "size": 1, - "treatment": "V2" - }, - { - "size": 1, - "treatment": "V3" - }, - { - "size": 1, - "treatment": "V4" - }, - { - "size": 1, - "treatment": "V5" - }, - { - "size": 1, - "treatment": "V6" - }, - { - "size": 1, - "treatment": "V7" - }, - { - "size": 1, - "treatment": "V8" - }, - { - "size": 1, - "treatment": "V9" - }, - { - "size": 1, - "treatment": "V10" - }, - { - "size": 1, - "treatment": "V11" - }, - { - "size": 1, - "treatment": "V12" - }, - { - "size": 1, - "treatment": "V13" - }, - { - "size": 1, - "treatment": "V14" - }, - { - "size": 1, - "treatment": "V15" - }, - { - "size": 1, - "treatment": "V16" - }, - { - "size": 1, - "treatment": "V17" - }, - { - "size": 1, - "treatment": "V18" - }, - { - "size": 1, - "treatment": "V19" - }, - { - "size": 1, - "treatment": "V20" - }, - { - "size": 1, - "treatment": "V21" - }, - { - "size": 1, - "treatment": "V22" - }, - { - "size": 1, - "treatment": "V23" - }, - { - "size": 1, - "treatment": "V24" - }, - { - "size": 1, - "treatment": "V25" - }, - { - "size": 1, - "treatment": "V26" - }, - { - "size": 1, - "treatment": "V27" - }, - { - "size": 1, - "treatment": "V28" - }, - { - "size": 1, - "treatment": "V29" - }, - { - "size": 1, - "treatment": "V30" - }, - { - "size": 1, - "treatment": "V31" - }, - { - "size": 1, - "treatment": "V32" - }, - { - "size": 1, - "treatment": "V33" - }, - { - "size": 1, - "treatment": "V34" - }, - { - "size": 1, - "treatment": "V35" - }, - { - "size": 1, - "treatment": "V36" - }, - { - "size": 1, - "treatment": "V37" - }, - { - "size": 1, - "treatment": "V38" - }, - { - "size": 1, - "treatment": "V39" - }, - { - "size": 1, - "treatment": "V40" - }, - { - "size": 1, - "treatment": "V41" - }, - { - "size": 1, - "treatment": "V42" - }, - { - "size": 1, - "treatment": "V43" - }, - { - "size": 1, - "treatment": "V44" - }, - { - "size": 1, - "treatment": "V45" - }, - { - "size": 1, - "treatment": "V46" - }, - { - "size": 1, - "treatment": "V47" - }, - { - "size": 1, - "treatment": "V48" - }, - { - "size": 1, - "treatment": "V49" - }, - { - "size": 1, - "treatment": "V50" - }, - { - "size": 1, - "treatment": "V51" - }, - { - "size": 1, - "treatment": "V52" - }, - { - "size": 1, - "treatment": "V53" - }, - { - "size": 1, - "treatment": "V54" - }, - { - "size": 1, - "treatment": "V55" - }, - { - "size": 1, - "treatment": "V56" - }, - { - "size": 1, - "treatment": "V57" - }, - { - "size": 1, - "treatment": "V58" - }, - { - "size": 1, - "treatment": "V59" - }, - { - "size": 1, - "treatment": "V60" - }, - { - "size": 1, - "treatment": "V61" - }, - { - "size": 1, - "treatment": "V62" - }, - { - "size": 1, - "treatment": "V63" - }, - { - "size": 1, - "treatment": "V64" - }, - { - "size": 1, - "treatment": "V65" - }, - { - "size": 1, - "treatment": "V66" - }, - { - "size": 1, - "treatment": "V67" - }, - { - "size": 1, - "treatment": "V68" - }, - { - "size": 1, - "treatment": "V69" - }, - { - "size": 1, - "treatment": "V70" - }, - { - "size": 1, - "treatment": "V71" - }, - { - "size": 1, - "treatment": "V72" - }, - { - "size": 1, - "treatment": "V73" - }, - { - "size": 1, - "treatment": "V74" - }, - { - "size": 1, - "treatment": "V75" - }, - { - "size": 1, - "treatment": "V76" - }, - { - "size": 1, - "treatment": "V77" - }, - { - "size": 1, - "treatment": "V78" - }, - { - "size": 1, - "treatment": "V79" - }, - { - "size": 1, - "treatment": "V80" - }, - { - "size": 1, - "treatment": "V81" - }, - { - "size": 1, - "treatment": "V82" - }, - { - "size": 1, - "treatment": "V83" - }, - { - "size": 1, - "treatment": "V84" - }, - { - "size": 1, - "treatment": "V85" - }, - { - "size": 1, - "treatment": "V86" - }, - { - "size": 1, - "treatment": "V87" - }, - { - "size": 1, - "treatment": "V88" - }, - { - "size": 1, - "treatment": "V89" - }, - { - "size": 1, - "treatment": "V90" - }, - { - "size": 1, - "treatment": "V91" - }, - { - "size": 1, - "treatment": "V92" - }, - { - "size": 1, - "treatment": "V93" - }, - { - "size": 1, - "treatment": "V94" - }, - { - "size": 1, - "treatment": "V95" - }, - { - "size": 1, - "treatment": "V96" - }, - { - "size": 1, - "treatment": "V97" - }, - { - "size": 1, - "treatment": "V98" - }, - { - "size": 1, - "treatment": "V99" - }, - { - "size": 1, - "treatment": "V100" - } - ] - } - ], - "defaultTreatment": "V1", - "trafficAllocation": 100, - "algo": 2, - "trafficTypeName": "account", - "status": "ACTIVE", - "killed": false - } - ], - "since":1506703262916, - "till":1506703262916 + ] + } + ], + "defaultTreatment": "V1", + "trafficAllocation": 100, + "algo": 2, + "trafficTypeName": "account", + "status": "ACTIVE", + "killed": false + } + ], + "since": 1506703262916, + "till": 1506703262916 + }, + "rbs": { + "d": [], + "s": 1506703262911, + "t": 1506703262911 + } } diff --git a/src/androidTest/assets/simple_split.json b/src/androidTest/assets/simple_split.json index c3e17e20b..009545ab8 100644 --- a/src/androidTest/assets/simple_split.json +++ b/src/androidTest/assets/simple_split.json @@ -1,107 +1,114 @@ { - "splits": [ - { - "trafficTypeName": "client", - "name": "workm", - "trafficAllocation": 100, - "trafficAllocationSeed": 147392224, - "seed": 524417105, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "on", - "changeNumber": 1602796638344, - "algo": 2, - "configurations": {}, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "ff": { + "splits": [ + { + "trafficTypeName": "client", + "name": "workm", + "trafficAllocation": 100, + "trafficAllocationSeed": 147392224, + "seed": 524417105, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "on", + "changeNumber": 1602796638344, + "algo": 2, + "configurations": {}, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "new_segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 0 + }, + { + "treatment": "free", + "size": 100 + }, { - "keySelector": { - "trafficType": "client", - "attribute": null - }, - "matcherType": "IN_SEGMENT", - "negate": false, - "userDefinedSegmentMatcherData": { - "segmentName": "new_segment" - }, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "conta", + "size": 0 } - ] + ], + "label": "in segment new_segment" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 0 - }, - { - "treatment": "free", - "size": 100 - }, - { - "treatment": "conta", - "size": 0 - } - ], - "label": "in segment new_segment" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 100 + }, { - "keySelector": { - "trafficType": "client", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "off", + "size": 0 + }, + { + "treatment": "free", + "size": 0 + }, + { + "treatment": "conta", + "size": 0 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 - }, - { - "treatment": "off", - "size": 0 - }, - { - "treatment": "free", - "size": 0 - }, - { - "treatment": "conta", - "size": 0 - } - ], - "label": "default rule" - } - ] - } - ], - "since": 1602796638344, - "till": 1602796638344 + ], + "label": "default rule" + } + ] + } + ], + "since": 1602796638344, + "till": 1602796638344 + }, + "rbs": { + "d": [], + "s": 1602796638341, + "t": 1602796638341 + } } diff --git a/src/androidTest/assets/split_changes_1.json b/src/androidTest/assets/split_changes_1.json index 7eee38b79..abdd14bdd 100644 --- a/src/androidTest/assets/split_changes_1.json +++ b/src/androidTest/assets/split_changes_1.json @@ -1,2533 +1,2540 @@ { - "splits":[ - { - "trafficTypeName":"account", - "name":"FACUNDO_TEST", - "trafficAllocation":59, - "trafficAllocationSeed":-2108186082, - "seed":-1947050785, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1506703262916, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "nico_test", - "othertest" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "bla" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "ff": { + "splits": [ + { + "trafficTypeName": "account", + "name": "FACUNDO_TEST", + "trafficAllocation": 59, + "trafficAllocationSeed": -2108186082, + "seed": -1947050785, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "nico_test", + "othertest" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "bla" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - }, - { - "treatment":"visa", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testing", - "trafficAllocation":100, - "trafficAllocationSeed":527505678, - "seed":-1716462249, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1506440189077, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"test_definition_as_of", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Identify_UI", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "treatment": "off", + "size": 100 + }, + { + "treatment": "visa", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testing", + "trafficAllocation": 100, + "trafficAllocationSeed": 527505678, + "seed": -1716462249, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506440189077, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "test_definition_as_of", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Identify_UI", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in split test_definition_as_of treatment [on] and not in split Identify_UI treatment [on]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"test_definition_as_of", - "treatments":[ - "off" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] + ], + "label": "in split test_definition_as_of treatment [on] and not in split Identify_UI treatment [on]" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "test_definition_as_of", + "treatments": [ + "off" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in split test_definition_as_of treatment [off]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testing222", - "trafficAllocation":100, - "trafficAllocationSeed":-397360967, - "seed":1058132210, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1505162627437, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 - }, - { - "treatment":"off", - "size":100 + ], + "label": "in split test_definition_as_of treatment [off]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testing222", + "trafficAllocation": 100, + "trafficAllocationSeed": -397360967, + "seed": 1058132210, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1505162627437, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"test222", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"a_new_split_2", - "trafficAllocation":99, - "trafficAllocationSeed":-1349440646, - "seed":-1536389703, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1505161671620, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "adil", - "bb", - "bbb", - "dd3c0800-30f1-11e7-ba78-12395d4a9634", - "pato", - "tito" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"test_copy" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "test222", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":52 - }, - { - "treatment":"off", - "size":48 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "a_new_split_2", + "trafficAllocation": 99, + "trafficAllocationSeed": -1349440646, + "seed": -1536389703, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1505161671620, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "adil", + "bb", + "bbb", + "dd3c0800-30f1-11e7-ba78-12395d4a9634", + "pato", + "tito" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"in segment all" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"asda" - }, - "matcherType":"STARTS_WITH", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ee", - "aa" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - }, + "partitions": [ { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":true, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 - }, - { - "treatment":"off", - "size":100 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"asda starts with [ee, aa] and not in segment segment2" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"pp" - }, - "matcherType":"PART_OF_SET", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "pato", - "adil" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":100 - }, - { - "treatment":"off", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "test_copy" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"pp part of [pato, adil]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"eee" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "1", - "2", - "trevorrr" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":20 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":80 - }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"eee in list [1, 2, ...]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_string_without_attr", - "trafficAllocation":100, - "trafficAllocationSeed":-782597068, - "seed":-1682478887, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1504805281437, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 52 }, { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "something" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 48 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "in segment all" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "asda" + }, + "matcherType": "STARTS_WITH", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ee", + "aa" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": true, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment Segment3 and in list [something]" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Test", - "trafficAllocation":100, - "trafficAllocationSeed":217539832, - "seed":52164426, - "status":"ACTIVE", - "killed":true, - "defaultTreatment":"off", - "changeNumber":1504206031141, - "algo":2, - "configurations": { - "off": "{\"f1\":\"v1\"}" - }, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"sample-segment" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"demo" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "asda starts with [ee, aa] and not in segment segment2" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"employees" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "pp" + }, + "matcherType": "PART_OF_SET", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "pato", + "adil" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "pp part of [pato, adil]" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"sample-segment" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "eee" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "1", + "2", + "trevorrr" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 20 }, { - "keySelector":{ - "trafficType":"user", - "attribute":"fsdfsd" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "b", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 80 }, { - "keySelector":{ - "trafficType":"user", - "attribute":"asdasdasd" - }, - "matcherType":"STARTS_WITH", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "asdad", - "sa", - "das" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "testo", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":10 + ], + "label": "eee in list [1, 2, ...]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_string_without_attr", + "trafficAllocation": 100, + "trafficAllocationSeed": -782597068, + "seed": -1682478887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1504805281437, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "something" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":90 - } - ], - "label":"in segment sample-segment and fsdfsd in list [a, b, ...] and asdasdasd does not start with [asdad, sa, ...]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Test_Save_1", - "trafficAllocation":100, - "trafficAllocationSeed":-257595325, - "seed":-665945237, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503956389520, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "1", - "12", - "123", - "23" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" + ], + "label": "in segment Segment3 and in list [something]" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Test", + "trafficAllocation": 100, + "trafficAllocationSeed": 217539832, + "seed": 52164426, + "status": "ACTIVE", + "killed": true, + "defaultTreatment": "off", + "changeNumber": 1504206031141, + "algo": 2, + "configurations": { + "off": "{\"f1\":\"v1\"}" }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "asd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "sample-segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "demo" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "employees" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":0 - }, - { - "treatment":"off", - "size":100 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "sample-segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "user", + "attribute": "fsdfsd" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "b", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "user", + "attribute": "asdasdasd" + }, + "matcherType": "STARTS_WITH", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "asdad", + "sa", + "das" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"v1", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"TEST", - "trafficAllocation":100, - "trafficAllocationSeed":-673356676, - "seed":-511119211, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503942404754, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 10 + }, + { + "treatment": "off", + "size": 90 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment sample-segment and fsdfsd in list [a, b, ...] and asdasdasd does not start with [asdad, sa, ...]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Test_Save_1", + "trafficAllocation": 100, + "trafficAllocationSeed": -257595325, + "seed": -665945237, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503956389520, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "1", + "12", + "123", + "23" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_1", - "trafficAllocation":100, - "trafficAllocationSeed":987354894, - "seed":1292874260, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503356075822, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":"atrib" - }, - "matcherType":"BETWEEN", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":{ - "dataType":"NUMBER", - "start":1474990940, - "end":1474990949 - }, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":95 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "asd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":5 - } - ], - "label":"atrib between 1474990940 and 1474990949" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":90 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":10 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"nico_tests", - "trafficAllocation":100, - "trafficAllocationSeed":1409699192, - "seed":-1997241870, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1501791316810, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "nico_test_browser__key" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"employees" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "v1", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "TEST", + "trafficAllocation": 100, + "trafficAllocationSeed": -673356676, + "seed": -511119211, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503942404754, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment employees" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo2222", - "trafficAllocation":100, - "trafficAllocationSeed":1164474086, - "seed":1270508512, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1501012403336, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "aasd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_1", + "trafficAllocation": 100, + "trafficAllocationSeed": 987354894, + "seed": 1292874260, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503356075822, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "atrib" + }, + "matcherType": "BETWEEN", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": { + "dataType": "NUMBER", + "start": 1474990940, + "end": 1474990949 + }, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 95 + }, + { + "treatment": "off", + "size": 5 } - ] + ], + "label": "atrib between 1474990940 and 1474990949" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ddddd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 90 + }, + { + "treatment": "off", + "size": 10 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "nico_tests", + "trafficAllocation": 100, + "trafficAllocationSeed": 1409699192, + "seed": -1997241870, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1501791316810, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "nico_test_browser__key" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ppp", - "ppppp" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "employees" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"pesto", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"test_copy" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment employees" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo2222", + "trafficAllocation": 100, + "trafficAllocationSeed": 1164474086, + "seed": 1270508512, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1501012403336, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "aasd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"pesto", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"off", - "size":0 - }, - { - "treatment":"on", - "size":100 - }, - { - "treatment":"pesto", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ddddd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"arse", - "size":0 - }, - { - "treatment":"zzzzick", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Tagging", - "trafficAllocation":100, - "trafficAllocationSeed":1910132597, - "seed":-311493896, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500590774768, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":50 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":50 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Welcome_Page_UI", - "trafficAllocation":100, - "trafficAllocationSeed":1848523960, - "seed":1608586361, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500577256901, - "algo":2, - "configurations": { - "off": "{\"the_emojis\":\"\uD83D\uDE01 -- áéíóúöÖüÜÏëç\"}" - }, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ppp", + "ppppp" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"test", - "name":"pato_test_3", - "trafficAllocation":100, - "trafficAllocationSeed":458647735, - "seed":95677506, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500510847849, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"test", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "pesto", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "test_copy" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo23", - "trafficAllocation":100, - "trafficAllocationSeed":-689658216, - "seed":1711156051, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500064145947, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"sdsd" - }, - "matcherType":"EQUAL_TO_BOOLEAN", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":true, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "pesto", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"sdsd is true" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo909090", - "trafficAllocation":100, - "trafficAllocationSeed":-1196467266, - "seed":-1998101827, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500039488369, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"a" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"v" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "on", + "size": 100 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"asdadas" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "b", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "pesto", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"sds" - }, - "matcherType":"CONTAINS_STRING", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "arse", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"xcvxv" - }, - "matcherType":"EQUAL_TO", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":{ - "dataType":"NUMBER", - "value":122 - }, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "zzzzick", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Tagging", + "trafficAllocation": 100, + "trafficAllocationSeed": 1910132597, + "seed": -311493896, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500590774768, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"a in list [a] and v in list [a] and asdadas in list [a, b, ...] and sds does not contain [a, c, ...] and xcvxv = 122" + "partitions": [ + { + "treatment": "on", + "size": 50 + }, + { + "treatment": "off", + "size": 50 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Welcome_Page_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": 1848523960, + "seed": 1608586361, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500577256901, + "algo": 2, + "configurations": { + "off": "{\"the_emojis\":\"\uD83D\uDE01 -- áéíóúöÖüÜÏëç\"}" }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "test", + "name": "pato_test_3", + "trafficAllocation": 100, + "trafficAllocationSeed": 458647735, + "seed": 95677506, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500510847849, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "test", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo22", - "trafficAllocation":100, - "trafficAllocationSeed":1223277820, - "seed":-1152948537, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499721434259, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo23", + "trafficAllocation": 100, + "trafficAllocationSeed": -689658216, + "seed": 1711156051, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500064145947, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "sdsd" + }, + "matcherType": "EQUAL_TO_BOOLEAN", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": true, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"test-net", - "trafficAllocation":100, - "trafficAllocationSeed":-2038196969, - "seed":-862203077, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499718635999, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "sdsd is true" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo909090", + "trafficAllocation": 100, + "trafficAllocationSeed": -1196467266, + "seed": -1998101827, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500039488369, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "a" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "v" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "asdadas" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "b", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "sds" + }, + "matcherType": "CONTAINS_STRING", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "xcvxv" + }, + "matcherType": "EQUAL_TO", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": { + "dataType": "NUMBER", + "value": 122 + }, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_dep_2", - "trafficAllocation":100, - "trafficAllocationSeed":-806171485, - "seed":922684950, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499707910800, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Identify_UI", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "a in list [a] and v in list [a] and asdadas in list [a, b, ...] and sds does not contain [a, c, ...] and xcvxv = 122" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in split Identify_UI treatment [on]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Definition_As_Of_Clickable_UI", - "treatments":[ - "off" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":50 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo22", + "trafficAllocation": 100, + "trafficAllocationSeed": 1223277820, + "seed": -1152948537, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499721434259, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":50 - } - ], - "label":"in split Definition_As_Of_Clickable_UI treatment [off]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Definition_As_Of_Clickable_UI", - "trafficAllocation":100, - "trafficAllocationSeed":-198035199, - "seed":-151947071, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1498168847351, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "tito", - "trevor" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "test-net", + "trafficAllocation": 100, + "trafficAllocationSeed": -2038196969, + "seed": -862203077, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499718635999, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_dep_2", + "trafficAllocation": 100, + "trafficAllocationSeed": -806171485, + "seed": 922684950, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499707910800, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Identify_UI", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Identify_UI", - "trafficAllocation":100, - "trafficAllocationSeed":-139516103, - "seed":1543172523, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1498078888450, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "in split Identify_UI treatment [on]" }, - "partitions":[ - { - "treatment":"on", - "size":100 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Definition_As_Of_Clickable_UI", + "treatments": [ + "off" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_definition_as_of", - "trafficAllocation":100, - "trafficAllocationSeed":1025823325, - "seed":-554248124, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1497289730024, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negatee":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 50 + }, + { + "treatment": "off", + "size": 50 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in split Definition_As_Of_Clickable_UI treatment [off]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Definition_As_Of_Clickable_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": -198035199, + "seed": -151947071, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1498168847351, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "tito", + "trevor" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Test-jw-go", - "trafficAllocation":100, - "trafficAllocationSeed":768122971, - "seed":1539205707, - "status":"ACTIVE", - "defaultTreatment":"off", - "changeNumber":1496339112852, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "test1" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Identify_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": -139516103, + "seed": 1543172523, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1498078888450, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_7", - "trafficAllocation":100, - "trafficAllocationSeed":-1340337178, - "seed":-1091938685, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593464885, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_definition_as_of", + "trafficAllocation": 100, + "trafficAllocationSeed": 1025823325, + "seed": -554248124, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1497289730024, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negatee": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_6", - "trafficAllocation":100, - "trafficAllocationSeed":-1202331834, - "seed":-48445256, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593448028, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Test-jw-go", + "trafficAllocation": 100, + "trafficAllocationSeed": 768122971, + "seed": 1539205707, + "status": "ACTIVE", + "defaultTreatment": "off", + "changeNumber": 1496339112852, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "test1" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_5", - "trafficAllocation":100, - "trafficAllocationSeed":2119994290, - "seed":-227092192, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593428034, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_4", - "trafficAllocation":100, - "trafficAllocationSeed":1066635158, - "seed":-850704283, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593412226, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_7", + "trafficAllocation": 100, + "trafficAllocationSeed": -1340337178, + "seed": -1091938685, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593464885, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_3", - "trafficAllocation":100, - "trafficAllocationSeed":1252392550, - "seed":971538037, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593352077, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_6", + "trafficAllocation": 100, + "trafficAllocationSeed": -1202331834, + "seed": -48445256, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593448028, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_2", - "trafficAllocation":100, - "trafficAllocationSeed":-285565213, - "seed":-1992295819, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593336752, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_5", + "trafficAllocation": 100, + "trafficAllocationSeed": 2119994290, + "seed": -227092192, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593428034, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_4", + "trafficAllocation": 100, + "trafficAllocationSeed": 1066635158, + "seed": -850704283, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593412226, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"broken_split", - "trafficAllocation":100, - "trafficAllocationSeed":-285565213, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593336752 - } - ], - "since":1506703262916, - "till":1506703262916 + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_3", + "trafficAllocation": 100, + "trafficAllocationSeed": 1252392550, + "seed": 971538037, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593352077, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_2", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593336752, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "broken_split", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593336752 + } + ], + "since": 1506703262916, + "till": 1506703262916 + }, + "rbs": { + "d": [], + "s": 1506703262911, + "t": 1506703262911 + } } \ No newline at end of file diff --git a/src/androidTest/assets/split_changes_flag_set-0.json b/src/androidTest/assets/split_changes_flag_set-0.json index 93be5fda4..9a6c1831b 100644 --- a/src/androidTest/assets/split_changes_flag_set-0.json +++ b/src/androidTest/assets/split_changes_flag_set-0.json @@ -1 +1 @@ -{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602798638344,"algo":2,"configurations":{},"sets":["set_3"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602797638344,"till":1602798638344} +{"ff":{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602798638344,"algo":2,"configurations":{},"sets":["set_3"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602797638344,"till":1602798638344},"rbs":{"d":[],"s":1602798638341,"t":1602798638341}} diff --git a/src/androidTest/assets/split_changes_flag_set-1.json b/src/androidTest/assets/split_changes_flag_set-1.json index 67f617712..14ba0e90d 100644 --- a/src/androidTest/assets/split_changes_flag_set-1.json +++ b/src/androidTest/assets/split_changes_flag_set-1.json @@ -1 +1 @@ -{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602797638344,"algo":2,"configurations":{},"sets":["set_1"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602796638344,"till":1602797638344} +{"ff":{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602797638344,"algo":2,"configurations":{},"sets":["set_1"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602796638344,"till":1602797638344},"rbs":{"d":[],"s":1602796638341,"t":1602796638341}} diff --git a/src/androidTest/assets/split_changes_flag_set-2.json b/src/androidTest/assets/split_changes_flag_set-2.json index 0e7576af6..8d1c23d6a 100644 --- a/src/androidTest/assets/split_changes_flag_set-2.json +++ b/src/androidTest/assets/split_changes_flag_set-2.json @@ -1 +1 @@ -{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602796638344,"algo":2,"configurations":{},"sets":["set_1","set_2"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]},{"trafficTypeName":"client","name":"workm_set_3","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602796638344,"algo":2,"configurations":{},"sets":["set_3"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602796638344,"till":1602796638344} +{"ff":{"splits":[{"trafficTypeName":"client","name":"workm","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602796638344,"algo":2,"configurations":{},"sets":["set_1","set_2"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]},{"trafficTypeName":"client","name":"workm_set_3","trafficAllocation":100,"trafficAllocationSeed":147392224,"seed":524417105,"status":"ACTIVE","killed":false,"defaultTreatment":"on","changeNumber":1602796638344,"algo":2,"configurations":{},"sets":["set_3"],"conditions":[{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"IN_SEGMENT","negate":false,"userDefinedSegmentMatcherData":{"segmentName":"new_segment"},"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":0},{"treatment":"off","size":0},{"treatment":"free","size":100},{"treatment":"conta","size":0}],"label":"in segment new_segment"},{"conditionType":"ROLLOUT","matcherGroup":{"combiner":"AND","matchers":[{"keySelector":{"trafficType":"client","attribute":null},"matcherType":"ALL_KEYS","negate":false,"userDefinedSegmentMatcherData":null,"whitelistMatcherData":null,"unaryNumericMatcherData":null,"betweenMatcherData":null,"booleanMatcherData":null,"dependencyMatcherData":null,"stringMatcherData":null}]},"partitions":[{"treatment":"on","size":100},{"treatment":"off","size":0},{"treatment":"free","size":0},{"treatment":"conta","size":0}],"label":"default rule"}]}],"since":1602796638344,"till":1602796638344},"rbs":{"d":[],"s":1602796638341,"t":1602796638341}} diff --git a/src/androidTest/assets/split_changes_imp_toggle.json b/src/androidTest/assets/split_changes_imp_toggle.json index 2d4682675..c400fcf60 100644 --- a/src/androidTest/assets/split_changes_imp_toggle.json +++ b/src/androidTest/assets/split_changes_imp_toggle.json @@ -1,124 +1,131 @@ { - "splits": [ - { - "trafficTypeName": "user", - "name": "tracked", - "trafficAllocation": 100, - "trafficAllocationSeed": -285565213, - "seed": -1992295819, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1506703262916, - "algo": 2, - "impressionsDisabled": false, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "ff": { + "splits": [ + { + "trafficTypeName": "user", + "name": "tracked", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "impressionsDisabled": false, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "new_segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 0 + }, { - "keySelector": { - "trafficType": "client", - "attribute": null - }, - "matcherType": "IN_SEGMENT", - "negate": false, - "userDefinedSegmentMatcherData": { - "segmentName": "new_segment" - }, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "free", + "size": 100 + }, + { + "treatment": "conta", + "size": 0 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 0 - }, - { - "treatment": "off", - "size": 0 - }, - { - "treatment": "free", - "size": 100 + ], + "label": "in segment new_segment" + } + ] + }, + { + "trafficTypeName": "user", + "name": "not_tracked", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "impressionsDisabled": true, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "new_segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "conta", - "size": 0 - } - ], - "label": "in segment new_segment" - } - ] - }, - { - "trafficTypeName": "user", - "name": "not_tracked", - "trafficAllocation": 100, - "trafficAllocationSeed": -285565213, - "seed": -1992295819, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1506703262916, - "algo": 2, - "impressionsDisabled": true, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ { - "keySelector": { - "trafficType": "client", - "attribute": null - }, - "matcherType": "IN_SEGMENT", - "negate": false, - "userDefinedSegmentMatcherData": { - "segmentName": "new_segment" - }, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 0 + }, + { + "treatment": "free", + "size": 100 + }, + { + "treatment": "conta", + "size": 0 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 0 - }, - { - "treatment": "off", - "size": 0 - }, - { - "treatment": "free", - "size": 100 - }, - { - "treatment": "conta", - "size": 0 - } - ], - "label": "in segment new_segment" - } - ] - } - ], - "since": 1506703262916, - "till": 1506703262916 -} + ], + "label": "in segment new_segment" + } + ] + } + ], + "since": 1506703262916, + "till": 1506703262916 + }, + "rbs": { + "d": [], + "s": 1506703262911, + "t": 1506703262911 + } +} \ No newline at end of file diff --git a/src/androidTest/assets/split_changes_large_segments-0.json b/src/androidTest/assets/split_changes_large_segments-0.json index 975f211d0..8d78431e5 100644 --- a/src/androidTest/assets/split_changes_large_segments-0.json +++ b/src/androidTest/assets/split_changes_large_segments-0.json @@ -1,49 +1,56 @@ { - "splits": [ - { - "trafficTypeName": "user", - "name": "ls_split", - "trafficAllocation": 100, - "trafficAllocationSeed": -285565213, - "seed": -1992295819, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1506703262916, - "algo": 2, - "conditions": [ - { - "conditionType": "WHITELIST", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "ff": { + "splits": [ + { + "trafficTypeName": "user", + "name": "ls_split", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_LARGE_SEGMENT", + "negate": false, + "userDefinedLargeSegmentMatcherData": { + "largeSegmentName": "large-segment1" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ { - "keySelector": null, - "matcherType": "IN_LARGE_SEGMENT", - "negate": false, - "userDefinedLargeSegmentMatcherData": { - "largeSegmentName": "large-segment1" - }, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "on", + "size": 100 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 - } - ], - "label": "whitelisted segment" - } - ] - } - ], - "since": 1506703262916, - "till": 1506703262916 + ], + "label": "whitelisted segment" + } + ] + } + ], + "since": 1506703262916, + "till": 1506703262916 + }, + "rbs": { + "d": [], + "s": 1506703262911, + "t": 1506703262911 + } } diff --git a/src/androidTest/assets/split_changes_semver.json b/src/androidTest/assets/split_changes_semver.json index 915178447..bb8e7f31c 100644 --- a/src/androidTest/assets/split_changes_semver.json +++ b/src/androidTest/assets/split_changes_semver.json @@ -1,431 +1,438 @@ { - "splits": [ - { - "trafficTypeName": "user", - "name": "semver_between", - "trafficAllocation": 100, - "trafficAllocationSeed": 1068038034, - "seed": -1053389887, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1675259356568, - "algo": 2, - "configurations": null, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ - { - "keySelector": { - "trafficType": "user", - "attribute": "version" - }, - "matcherType": "BETWEEN_SEMVER", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": null, - "betweenStringMatcherData": { - "start": "1.22.9", - "end": "2.1.0" + "ff": { + "splits": [ + { + "trafficTypeName": "user", + "name": "semver_between", + "trafficAllocation": 100, + "trafficAllocationSeed": 1068038034, + "seed": -1053389887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1675259356568, + "algo": 2, + "configurations": null, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "version" + }, + "matcherType": "BETWEEN_SEMVER", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": null, + "betweenStringMatcherData": { + "start": "1.22.9", + "end": "2.1.0" + } } - } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 + ] }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "between semver" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 100 + }, { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "off", + "size": 0 } - ] + ], + "label": "between semver" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "default rule" - } - ] - }, - { - "trafficTypeName": "user", - "name": "semver_equalto", - "trafficAllocation": 100, - "trafficAllocationSeed": 1068038034, - "seed": -1053389887, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1675259356568, - "algo": 2, - "configurations": null, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 0 + }, { - "keySelector": { - "trafficType": "user", - "attribute": "version" - }, - "matcherType": "EQUAL_TO_SEMVER", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": "1.22.9" + "treatment": "off", + "size": 100 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 + ], + "label": "default rule" + } + ] + }, + { + "trafficTypeName": "user", + "name": "semver_equalto", + "trafficAllocation": 100, + "trafficAllocationSeed": 1068038034, + "seed": -1053389887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1675259356568, + "algo": 2, + "configurations": null, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "version" + }, + "matcherType": "EQUAL_TO_SEMVER", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": "1.22.9" + } + ] }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "equal to semver" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 100 + }, { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "off", + "size": 0 } - ] + ], + "label": "equal to semver" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "default rule" - } - ] - }, - { - "trafficTypeName": "user", - "name": "semver_greater_or_equalto", - "trafficAllocation": 100, - "trafficAllocationSeed": 1068038034, - "seed": -1053389887, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1675259356568, - "algo": 2, - "configurations": null, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 0 + }, { - "keySelector": { - "trafficType": "user", - "attribute": "version" - }, - "matcherType": "GREATER_THAN_OR_EQUAL_TO_SEMVER", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": "1.22.9" + "treatment": "off", + "size": 100 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 + ], + "label": "default rule" + } + ] + }, + { + "trafficTypeName": "user", + "name": "semver_greater_or_equalto", + "trafficAllocation": 100, + "trafficAllocationSeed": 1068038034, + "seed": -1053389887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1675259356568, + "algo": 2, + "configurations": null, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "version" + }, + "matcherType": "GREATER_THAN_OR_EQUAL_TO_SEMVER", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": "1.22.9" + } + ] }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "greater than or equal to semver" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 100 + }, { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "off", + "size": 0 } - ] + ], + "label": "greater than or equal to semver" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "default rule" - } - ] - }, - { - "trafficTypeName": "user", - "name": "semver_inlist", - "trafficAllocation": 100, - "trafficAllocationSeed": 1068038034, - "seed": -1053389887, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1675259356568, - "algo": 2, - "configurations": null, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 0 + }, { - "keySelector": { - "trafficType": "user", - "attribute": "version" - }, - "matcherType": "IN_LIST_SEMVER", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": { - "whitelist": [ - "1.22.9", - "2.1.0" - ] - }, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": null, - "betweenStringMatcherData": null + "treatment": "off", + "size": 100 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 + ], + "label": "default rule" + } + ] + }, + { + "trafficTypeName": "user", + "name": "semver_inlist", + "trafficAllocation": 100, + "trafficAllocationSeed": 1068038034, + "seed": -1053389887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1675259356568, + "algo": 2, + "configurations": null, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "version" + }, + "matcherType": "IN_LIST_SEMVER", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "1.22.9", + "2.1.0" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": null, + "betweenStringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "in list semver" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] + ], + "label": "in list semver" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "default rule" - } - ] - }, - { - "trafficTypeName": "user", - "name": "semver_less_or_equalto", - "trafficAllocation": 100, - "trafficAllocationSeed": 1068038034, - "seed": -1053389887, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "changeNumber": 1675259356568, - "algo": 2, - "configurations": null, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 0 + }, { - "keySelector": { - "trafficType": "user", - "attribute": "version" - }, - "matcherType": "LESS_THAN_OR_EQUAL_TO_SEMVER", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": "1.22.9" + "treatment": "off", + "size": 100 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 + ], + "label": "default rule" + } + ] + }, + { + "trafficTypeName": "user", + "name": "semver_less_or_equalto", + "trafficAllocation": 100, + "trafficAllocationSeed": 1068038034, + "seed": -1053389887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1675259356568, + "algo": 2, + "configurations": null, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "version" + }, + "matcherType": "LESS_THAN_OR_EQUAL_TO_SEMVER", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": "1.22.9" + } + ] }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "less than or equal to semver" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "ALL_KEYS", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "booleanMatcherData": null, - "dependencyMatcherData": null, - "stringMatcherData": null + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] + ], + "label": "less than or equal to semver" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "default rule" - } - ] - } - ], - "since": -1, - "till": 1675259356568 -} + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + } + ], + "label": "default rule" + } + ] + } + ], + "since": -1, + "till": 1675259356568 + }, + "rbs": { + "d": [], + "s": -1, + "t": 1675259356561 + } +} \ No newline at end of file diff --git a/src/androidTest/assets/splitchanges_int_test.json b/src/androidTest/assets/splitchanges_int_test.json index cd02900d2..2073118b1 100644 --- a/src/androidTest/assets/splitchanges_int_test.json +++ b/src/androidTest/assets/splitchanges_int_test.json @@ -1,57 +1,62 @@ { - "splits":[ - { - "trafficTypeName":"client", - "name":"test_feature", - "trafficAllocation":100, - "trafficAllocationSeed":-2049557248, - "seed":1188118899, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"yes", - "changeNumber":1567456937865, - "algo":2, - "configurations":{ - - }, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ + "ff": { + "splits": [ + { + "trafficTypeName": "client", + "name": "test_feature", + "trafficAllocation": 100, + "trafficAllocationSeed": -2049557248, + "seed": 1188118899, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "yes", + "changeNumber": 1567456937865, + "algo": 2, + "configurations": {}, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "client", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "si", + "size": 0 + }, { - "keySelector":{ - "trafficType":"client", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "no", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"si", - "size":0 - }, - { - "treatment":"no", - "size":100 - } - ], - "label":"default rule" - } - ] - } - ], - "since":1567456937865, - "till":1567456937865 + ], + "label": "default rule" + } + ] + } + ], + "since": 1567456937865, + "till": 1567456937865 + }, + "rbs": { + "d": [], + "s": 1567456937861, + "t": 1567456937861 + } } \ No newline at end of file diff --git a/src/androidTest/assets/splitchanges_unsupported_matcher.json b/src/androidTest/assets/splitchanges_unsupported_matcher.json index 71167a2da..53379c4d1 100644 --- a/src/androidTest/assets/splitchanges_unsupported_matcher.json +++ b/src/androidTest/assets/splitchanges_unsupported_matcher.json @@ -1,89 +1,95 @@ { - "splits": [ - { - "changeNumber": 1709843458770, - "trafficTypeName": "user", - "name": "feature_flag_for_test", - "trafficAllocation": 100, - "trafficAllocationSeed": -1364119282, - "seed": -605938843, - "status": "ACTIVE", - "killed": false, - "defaultTreatment": "off", - "algo": 2, - "conditions": [ - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "ff": { + "splits": [ + { + "changeNumber": 1709843458770, + "trafficTypeName": "user", + "name": "feature_flag_for_test", + "trafficAllocation": 100, + "trafficAllocationSeed": -1364119282, + "seed": -605938843, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "WRONG_MATCHER_TYPE", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": "123123" + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 + }, { - "keySelector": { - "trafficType": "user", - "attribute": null - }, - "matcherType": "WRONG_MATCHER_TYPE", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": "123123" + "treatment": "off", + "size": 100 } - ] + ], + "label": "wrong matcher type" }, - "partitions": [ - { - "treatment": "on", - "size": 0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "sem" + }, + "matcherType": "MATCHES_STRING", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "dependencyMatcherData": null, + "booleanMatcherData": null, + "stringMatcherData": "1.2.3" + } + ] }, - { - "treatment": "off", - "size": 100 - } - ], - "label": "wrong matcher type" - }, - { - "conditionType": "ROLLOUT", - "matcherGroup": { - "combiner": "AND", - "matchers": [ + "partitions": [ + { + "treatment": "on", + "size": 100 + }, { - "keySelector": { - "trafficType": "user", - "attribute": "sem" - }, - "matcherType": "MATCHES_STRING", - "negate": false, - "userDefinedSegmentMatcherData": null, - "whitelistMatcherData": null, - "unaryNumericMatcherData": null, - "betweenMatcherData": null, - "dependencyMatcherData": null, - "booleanMatcherData": null, - "stringMatcherData": "1.2.3" + "treatment": "off", + "size": 0 } - ] - }, - "partitions": [ - { - "treatment": "on", - "size": 100 - }, - { - "treatment": "off", - "size": 0 - } - ], - "label": "sem matches 1.2.3" - } - ], - "configurations": { - }, - "sets": [] - } - ] -} + ], + "label": "sem matches 1.2.3" + } + ], + "configurations": {}, + "sets": [] + } + ] + }, + "rbs": { + "d": [], + "s": -1, + "t": 1709843458770 + } +} \ No newline at end of file diff --git a/src/androidTest/java/helper/IntegrationHelper.java b/src/androidTest/java/helper/IntegrationHelper.java index 6144c6a7b..7e925c4f5 100644 --- a/src/androidTest/java/helper/IntegrationHelper.java +++ b/src/androidTest/java/helper/IntegrationHelper.java @@ -40,6 +40,7 @@ import io.split.android.client.api.Key; import io.split.android.client.dtos.Event; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.lifecycle.SplitLifecycleManager; import io.split.android.client.network.HttpClient; @@ -99,7 +100,7 @@ public static String emptySplitChanges(long since, long till) { } public static String emptySplitChanges(long till) { - return String.format("{\"splits\":[], \"since\": %d, \"till\": %d }", till, till); + return String.format("{\"ff\":{\"splits\":[], \"since\": %d, \"till\": %d},\"rbs\":{\"d\":[],\"s\":%d,\"t\":%d}}", till, till, till, till); } public static SplitFactory buildFactory(String apiToken, Key key, SplitClientConfig config, @@ -317,9 +318,9 @@ public static String splitKill(String changeNumber, String splitName) { public static String loadSplitChanges(Context context, String fileName) { FileHelper fileHelper = new FileHelper(); String change = fileHelper.loadFileContent(context, fileName); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = Json.fromJson(change, TargetingRulesChange.class).getFeatureFlagsChange(); parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } /** @@ -423,6 +424,10 @@ static Map parse(String query) throws UnsupportedEncodingExcepti return queryPairs; } + public static SplitChange getChangeFromJsonString(String json) { + return Json.fromJson(json, TargetingRulesChange.class).getFeatureFlagsChange(); + } + /** * A simple interface to allow us to define the response for a given path */ diff --git a/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java b/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java index d3f9152f4..7b14d8020 100644 --- a/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java +++ b/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java @@ -3,7 +3,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - import static helper.IntegrationHelper.getSinceFromUri; import android.content.Context; @@ -29,13 +28,11 @@ import fake.LifecycleManagerStub; import fake.SynchronizerSpyImpl; import helper.DatabaseHelper; -import helper.FileHelper; import helper.IntegrationHelper; import helper.TestableSplitConfigBuilder; import io.split.android.client.SplitClient; import io.split.android.client.SplitFactory; import io.split.android.client.dtos.KeyImpression; -import io.split.android.client.dtos.SplitChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.impressions.Impression; import io.split.android.client.impressions.ImpressionListener; @@ -341,10 +338,6 @@ private SplitFactory initSplitFactory(TestableSplitConfigBuilder builder, HttpCl } private String loadSplitChanges() { - FileHelper fileHelper = new FileHelper(); - String change = fileHelper.loadFileContent(mContext, "split_changes_1.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); - parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return IntegrationHelper.loadSplitChanges(mContext, "split_changes_1.json"); } } diff --git a/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java b/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java index c289ef64e..352c96069 100644 --- a/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java +++ b/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java @@ -26,18 +26,15 @@ import fake.HttpResponseMock; import fake.HttpResponseMockDispatcher; import helper.DatabaseHelper; -import helper.FileHelper; import helper.IntegrationHelper; import helper.TestableSplitConfigBuilder; import io.split.android.client.SplitClient; import io.split.android.client.SplitFactory; import io.split.android.client.TestingConfig; -import io.split.android.client.dtos.SplitChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.storage.db.GeneralInfoEntity; import io.split.android.client.storage.db.SplitEntity; import io.split.android.client.storage.db.SplitRoomDatabase; -import io.split.android.client.utils.Json; import tests.integration.shared.TestingHelper; public class FlagsSpecInRequestTest { @@ -197,11 +194,8 @@ private SplitFactory initSplitFactory(TestableSplitConfigBuilder builder, HttpCl } private String loadSplitChanges() { - FileHelper fileHelper = new FileHelper(); - String change = fileHelper.loadFileContent(mContext, "split_changes_1.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); - parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + String changes = IntegrationHelper.loadSplitChanges(mContext, "split_changes_1.json"); + return changes; } private static SplitEntity newSplitEntity(String name, String trafficType, Set sets) { diff --git a/src/androidTest/java/tests/integration/InitialChangeNumberTest.java b/src/androidTest/java/tests/integration/InitialChangeNumberTest.java index a8b64a13e..95de23a06 100644 --- a/src/androidTest/java/tests/integration/InitialChangeNumberTest.java +++ b/src/androidTest/java/tests/integration/InitialChangeNumberTest.java @@ -74,7 +74,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio mIsFirstChangeNumber = false; } return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\":" + changeNumber + ", \"till\":" + (changeNumber) + "}"); + .setBody(IntegrationHelper.emptySplitChanges(changeNumber)); } else if (request.getPath().contains("/events/bulk")) { String trackRequestBody = request.getBody().readUtf8(); diff --git a/src/androidTest/java/tests/integration/IntegrationTest.java b/src/androidTest/java/tests/integration/IntegrationTest.java index 07f8d8c37..1aa8752de 100644 --- a/src/androidTest/java/tests/integration/IntegrationTest.java +++ b/src/androidTest/java/tests/integration/IntegrationTest.java @@ -303,7 +303,7 @@ public void testGetTreatmentFromCache() throws Exception { mRoomDb = DatabaseHelper.getTestDatabase(mContext); mRoomDb.generalInfoDao().update(new GeneralInfoEntity(GeneralInfoEntity.CHANGE_NUMBER_INFO, 10)); - SplitChange change = Json.fromJson(mJsonChanges.get(0), SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString(mJsonChanges.get(0)); List entities = new ArrayList<>(); for (Split split : change.splits) { String splitName = split.name; diff --git a/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java b/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java index 34b5dcc25..e0666789b 100644 --- a/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java +++ b/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java @@ -37,6 +37,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.dtos.UserDefinedSegmentMatcherData; import io.split.android.client.events.SplitEvent; @@ -215,7 +216,7 @@ private void loadSplitChanges() { mJsonChanges = new ArrayList<>(); String jsonChange = fileHelper.loadFileContent(mContext, "splitchanges_int_test.json"); - SplitChange change = Json.fromJson(jsonChange, SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString(jsonChange); Split split = change.splits.get(0); split.changeNumber = change.since + 1; @@ -239,7 +240,7 @@ private void loadSplitChanges() { split.conditions.add(0, inSegmentOneCondition); split.conditions.add(0, inSegmentTwoCondition); - mJsonChanges.add(Json.toJson(change)); + mJsonChanges.add(Json.toJson(TargetingRulesChange.create(change))); } private Condition inSegmentCondition(String name) { diff --git a/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java b/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java index ab1dc376b..a42fc79ec 100644 --- a/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java +++ b/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java @@ -34,6 +34,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.dtos.UserDefinedSegmentMatcherData; import io.split.android.client.events.SplitEvent; @@ -118,7 +119,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio .setBody(change); } return new MockResponse().setResponseCode(200) - .setBody(emptyChanges()); + .setBody(IntegrationHelper.emptySplitChanges(9567456937869L)); } else if (request.getPath().contains("/testImpressions/bulk")) { @@ -208,7 +209,7 @@ private void loadSplitChanges() { mJsonChanges = new ArrayList<>(); String jsonChange = fileHelper.loadFileContent(mContext, "splitchanges_int_test.json"); - SplitChange change = Json.fromJson(jsonChange, SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString(jsonChange); Split split = change.splits.get(0); split.changeNumber = change.since + 1; @@ -232,7 +233,7 @@ private void loadSplitChanges() { split.conditions.add(0, inSegmentOneCondition); split.conditions.add(0, inSegmentTwoCondition); - mJsonChanges.add(Json.toJson(change)); + mJsonChanges.add(Json.toJson(TargetingRulesChange.create(change))); } private Condition inSegmentCondition(String name) { diff --git a/src/androidTest/java/tests/integration/SingleSyncTest.java b/src/androidTest/java/tests/integration/SingleSyncTest.java index 4dd623b3b..13f540006 100644 --- a/src/androidTest/java/tests/integration/SingleSyncTest.java +++ b/src/androidTest/java/tests/integration/SingleSyncTest.java @@ -332,10 +332,6 @@ private HttpStreamResponseMock createStreamResponse(int status, BlockingQueue streamingResponseData) throws IOException { diff --git a/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java b/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java index 562939151..1dea774a7 100644 --- a/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java +++ b/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java @@ -32,6 +32,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.SplitRoomDatabase; @@ -175,7 +176,7 @@ private void loadSplitChanges() { String jsonChange = fileHelper.loadFileContent(mContext, "splitchanges_int_test.json"); long prevChangeNumber = 0; for (int i = 0; i < 3; i++) { - SplitChange change = Json.fromJson(jsonChange, SplitChange.class); + SplitChange change = Json.fromJson(jsonChange, TargetingRulesChange.class).getFeatureFlagsChange(); if (prevChangeNumber != 0) { change.since = prevChangeNumber + CHANGE_INTERVAL; change.till = prevChangeNumber + CHANGE_INTERVAL; @@ -190,7 +191,7 @@ private void loadSplitChanges() { p1.size = (i < 2 ? 100 : 0); p2.treatment = "off"; p2.size = (i < 2 ? 0 : 100); - mJsonChanges.add(Json.toJson(change)); + mJsonChanges.add(Json.toJson(TargetingRulesChange.create(change))); } } diff --git a/src/androidTest/java/tests/integration/SplitChangesTest.java b/src/androidTest/java/tests/integration/SplitChangesTest.java index 754854d4c..89243574c 100644 --- a/src/androidTest/java/tests/integration/SplitChangesTest.java +++ b/src/androidTest/java/tests/integration/SplitChangesTest.java @@ -31,6 +31,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.events.SplitEvent; import io.split.android.client.impressions.Impression; @@ -99,7 +100,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio mLatchs.get(currReq - 1).countDown(); } return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\": 1567456938865, \"till\": 1567456938865 }"); + .setBody(IntegrationHelper.emptySplitChanges(1567456938865L)); } else if (request.getPath().contains("/testImpressions/bulk")) { @@ -208,7 +209,7 @@ private void loadSplitChanges() { String jsonChange = fileHelper.loadFileContent(mContext, "splitchanges_int_test.json"); long prevChangeNumber = 0; for (int i = 0; i < 4; i++) { - SplitChange change = Json.fromJson(jsonChange, SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString(jsonChange); if (prevChangeNumber != 0) { change.since = prevChangeNumber; change.till = prevChangeNumber + CHANGE_INTERVAL; @@ -223,7 +224,7 @@ private void loadSplitChanges() { p1.size = (even ? 100 : 0); p2.treatment = "off_" + i; p2.size = (even ? 0 : 100); - mJsonChanges.add(Json.toJson(change)); + mJsonChanges.add(Json.toJson(TargetingRulesChange.create(change))); } } diff --git a/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java b/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java index 548daad4d..c8b04b3ec 100644 --- a/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java +++ b/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java @@ -34,6 +34,7 @@ import io.split.android.client.SplitFactory; import io.split.android.client.TestingConfig; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.SplitRoomDatabase; @@ -224,15 +225,15 @@ private String loadMockedData(String fileName) { } private void loadSplitChanges() { - mSplitChange = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + mSplitChange = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); } private String getSplitChanges(int factoryNumber, int hitNumber) { mSplitChange.splits.get(0).name = "split" + factoryNumber; mSplitChange.since = (hitNumber == 0 ? -1 : CHANGE_NUMBER_BASE + factoryNumber); mSplitChange.till = CHANGE_NUMBER_BASE + factoryNumber; - return Json.toJson(mSplitChange); + return Json.toJson(TargetingRulesChange.create(mSplitChange)); } private void testSplitsUpdate(long changeNumber, int factoryNumber) throws InterruptedException { diff --git a/src/androidTest/java/tests/integration/TrackTest.java b/src/androidTest/java/tests/integration/TrackTest.java index 550aac3dd..968ee3459 100644 --- a/src/androidTest/java/tests/integration/TrackTest.java +++ b/src/androidTest/java/tests/integration/TrackTest.java @@ -262,7 +262,7 @@ public void largeNumberInPropertiesTest() throws InterruptedException, SplitInst } private String emptyChanges() { - return "{\"splits\":[], \"since\": 9567456937869, \"till\": 9567456937869 }"; + return IntegrationHelper.emptySplitChanges(9567456937869L, 9567456937869L); } private Event findEvent(String type, Double value) { diff --git a/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java b/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java index 949d415aa..ebaeea4fe 100644 --- a/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java +++ b/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java @@ -279,7 +279,7 @@ private List getSplitListFromJson() { FileHelper fileHelper = new FileHelper(); String s = fileHelper.loadFileContent(mContext, "attributes_test_split_change.json"); - SplitChange changes = Json.fromJson(s, SplitChange.class); + SplitChange changes = IntegrationHelper.getChangeFromJsonString(s); return changes.splits; } diff --git a/src/androidTest/java/tests/integration/encryption/EncryptionTest.java b/src/androidTest/java/tests/integration/encryption/EncryptionTest.java index 6cf5fa6fa..8d9abd31b 100644 --- a/src/androidTest/java/tests/integration/encryption/EncryptionTest.java +++ b/src/androidTest/java/tests/integration/encryption/EncryptionTest.java @@ -30,6 +30,7 @@ import io.split.android.client.SplitClientConfig; import io.split.android.client.SplitFactory; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.events.SplitEventTask; import io.split.android.client.service.impressions.ImpressionsMode; @@ -359,10 +360,10 @@ private Map getResponses() { private String loadSplitChanges() { FileHelper fileHelper = new FileHelper(); String change = fileHelper.loadFileContent(mContext, "split_changes_1.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.splits = parsedChange.splits.stream().filter(s -> s.name.equals("FACUNDO_TEST") || s.name.equals("testing")).collect(Collectors.toList()); parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } } diff --git a/src/androidTest/java/tests/integration/init/InitializationTest.java b/src/androidTest/java/tests/integration/init/InitializationTest.java index 819a0cfce..340b74889 100644 --- a/src/androidTest/java/tests/integration/init/InitializationTest.java +++ b/src/androidTest/java/tests/integration/init/InitializationTest.java @@ -187,10 +187,6 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio } private String loadSplitChanges() { - FileHelper fileHelper = new FileHelper(); - String change = fileHelper.loadFileContent(mContext, "split_changes_1.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); - parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return IntegrationHelper.loadSplitChanges(mContext, "split_changes_1.json"); } } diff --git a/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java b/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java index f8d876a69..3e30292f5 100644 --- a/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java +++ b/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java @@ -23,6 +23,7 @@ import io.split.android.client.SplitClient; import io.split.android.client.SplitFactory; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.storage.db.SplitRoomDatabase; import io.split.android.client.utils.Json; @@ -151,10 +152,10 @@ protected SplitClient getReadyClient(String matchingKey, SplitFactory factory) { private String splitChangesLargeSegments(long since, long till) { String change = mFileHelper.loadFileContent(mContext, "split_changes_large_segments-0.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.since = since; parsedChange.till = till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } } diff --git a/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java b/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java index f5cfe3cdc..30d67a2e3 100644 --- a/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java +++ b/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java @@ -33,6 +33,7 @@ import io.split.android.client.SplitFactory; import io.split.android.client.dtos.SegmentsChange; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.storage.db.SplitRoomDatabase; import io.split.android.client.utils.Json; @@ -185,11 +186,11 @@ private HttpResponseMockDispatcher buildDispatcher() { private String splitChangesLargeSegments(long since, long till) { String change = mFileHelper.loadFileContent(mContext, "split_changes_large_segments-0.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.since = since; parsedChange.till = till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } private void initializeLatches() { diff --git a/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java b/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java index e11af1561..98a9d70b7 100644 --- a/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java +++ b/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java @@ -162,10 +162,6 @@ private SplitFactory initSplitFactory(TestableSplitConfigBuilder builder, HttpCl } private String loadSplitChanges() { - FileHelper fileHelper = new FileHelper(); - String change = fileHelper.loadFileContent(mContext, "splitchanges_unsupported_matcher.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); - parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return IntegrationHelper.loadSplitChanges(mContext, "splitchanges_unsupported_matcher.json"); } } diff --git a/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java b/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java index be821fde0..2f7d763eb 100644 --- a/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java +++ b/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java @@ -298,7 +298,7 @@ private List getSplitListFromJson() { FileHelper fileHelper = new FileHelper(); String s = fileHelper.loadFileContent(mContext, "attributes_test_split_change.json"); - SplitChange changes = Json.fromJson(s, SplitChange.class); + SplitChange changes = IntegrationHelper.getChangeFromJsonString(s); return changes.splits; } diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java b/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java index 5507e432b..387b7da80 100644 --- a/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java +++ b/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java @@ -31,6 +31,7 @@ import io.split.android.client.SplitResult; import io.split.android.client.SyncConfig; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.storage.db.SplitRoomDatabase; import io.split.android.client.utils.Json; @@ -163,9 +164,9 @@ private SplitClient getClient( private String loadSplitChangeWithSet(int setsCount) { String change = mFileHelper.loadFileContent(mContext, "split_changes_flag_set-" + setsCount + ".json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } } diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java b/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java index da3d18250..49a1ffc1e 100644 --- a/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java +++ b/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java @@ -35,6 +35,7 @@ import io.split.android.client.SplitFilter; import io.split.android.client.SyncConfig; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.utils.Json; import tests.integration.shared.TestingHelper; @@ -125,10 +126,10 @@ private List getNamesFromDb(String dbName) { private String loadSplitChangeWithSet(int setsCount) { String change = mFileHelper.loadFileContent(mContext, "split_changes_flag_set-" + setsCount + ".json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } private HttpResponseMockDispatcher getDispatcher(int setsCount) { diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java b/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java index 06146259a..ef8543406 100644 --- a/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java +++ b/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java @@ -34,6 +34,7 @@ import io.split.android.client.SyncConfig; import io.split.android.client.TestingConfig; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.storage.db.SplitEntity; import io.split.android.client.storage.db.SplitRoomDatabase; import io.split.android.client.utils.Json; @@ -226,9 +227,9 @@ private SplitFactory createFactory( private String loadSplitChangeWithSet(int setsCount) { String change = fileHelper.loadFileContent(mContext, "split_changes_flag_set-" + setsCount + ".json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); + SplitChange parsedChange = IntegrationHelper.getChangeFromJsonString(change); parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return Json.toJson(TargetingRulesChange.create(parsedChange)); } } diff --git a/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java b/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java index 65167f866..c899a446c 100644 --- a/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java +++ b/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java @@ -11,7 +11,10 @@ import helper.IntegrationHelper; import io.split.android.client.SplitClient; import io.split.android.client.api.Key; +import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; +import io.split.android.client.utils.Json; import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.RecordedRequest; @@ -40,7 +43,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio String splitChange = "{\"splits\":[{\"trafficTypeName\":\"account\",\"name\":\"android_test_2\",\"trafficAllocation\":100,\"trafficAllocationSeed\":-1955610140,\"seed\":-633015570,\"status\":\"ACTIVE\",\"killed\":false,\"defaultTreatment\":\"off\",\"changeNumber\":1648733409158,\"algo\":2,\"configurations\":{},\"conditions\":[{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"IN_SPLIT_TREATMENT\",\"negate\":false,\"userDefinedSegmentMatcherData\":null,\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":{\"split\":\"android_test_3\",\"treatments\":[\"on\"]},\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":100},{\"treatment\":\"off\",\"size\":0}],\"label\":\"in split android_test_3 treatment [on]\"},{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"ALL_KEYS\",\"negate\":false,\"userDefinedSegmentMatcherData\":null,\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":null,\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":0},{\"treatment\":\"off\",\"size\":100}],\"label\":\"default rule\"}]},{\"trafficTypeName\":\"account\",\"name\":\"android_test_3\",\"trafficAllocation\":100,\"trafficAllocationSeed\":-397942789,\"seed\":1852089605,\"status\":\"ACTIVE\",\"killed\":false,\"defaultTreatment\":\"off\",\"changeNumber\":1648733496087,\"algo\":2,\"configurations\":{},\"conditions\":[{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"IN_SEGMENT\",\"negate\":false,\"userDefinedSegmentMatcherData\":{\"segmentName\":\"android_test\"},\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":null,\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":100},{\"treatment\":\"off\",\"size\":0}],\"label\":\"in segment android_test\"},{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"ALL_KEYS\",\"negate\":false,\"userDefinedSegmentMatcherData\":null,\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":null,\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":0},{\"treatment\":\"off\",\"size\":100}],\"label\":\"default rule\"}]}],\"since\":1648733409158,\"till\":1648733409158}"; return new MockResponse().setResponseCode(200) - .setBody(splitChange); + .setBody(Json.toJson(TargetingRulesChange.create(Json.fromJson(splitChange, SplitChange.class)))); } else if (request.getPath().contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else { diff --git a/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java b/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java index 7b5423f8d..9c55e1656 100644 --- a/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java +++ b/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java @@ -10,7 +10,10 @@ import helper.IntegrationHelper; import io.split.android.client.SplitClient; import io.split.android.client.api.Key; +import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; +import io.split.android.client.utils.Json; import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.RecordedRequest; @@ -34,7 +37,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio String splitChange = "{\"splits\":[{\"trafficTypeName\":\"account\",\"name\":\"android_test_2\",\"trafficAllocation\":100,\"trafficAllocationSeed\":-1955610140,\"seed\":-633015570,\"status\":\"ACTIVE\",\"killed\":false,\"defaultTreatment\":\"off\",\"changeNumber\":1648733409158,\"algo\":2,\"configurations\":{},\"conditions\":[{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"IN_SPLIT_TREATMENT\",\"negate\":false,\"userDefinedSegmentMatcherData\":null,\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":{\"split\":\"android_test_3\",\"treatments\":[\"on\"]},\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":100},{\"treatment\":\"off\",\"size\":0}],\"label\":\"in split android_test_3 treatment [on]\"},{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"ALL_KEYS\",\"negate\":false,\"userDefinedSegmentMatcherData\":null,\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":null,\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":0},{\"treatment\":\"off\",\"size\":100}],\"label\":\"default rule\"}]},{\"trafficTypeName\":\"account\",\"name\":\"android_test_3\",\"trafficAllocation\":100,\"trafficAllocationSeed\":-397942789,\"seed\":1852089605,\"status\":\"ACTIVE\",\"killed\":false,\"defaultTreatment\":\"off\",\"changeNumber\":1648733496087,\"algo\":2,\"configurations\":{},\"conditions\":[{\"conditionType\":\"ROLLOUT\",\"matcherGroup\":{\"combiner\":\"AND\",\"matchers\":[{\"keySelector\":{\"trafficType\":\"account\",\"attribute\":null},\"matcherType\":\"IN_SEGMENT\",\"negate\":false,\"userDefinedSegmentMatcherData\":{\"segmentName\":\"android_test\"},\"whitelistMatcherData\":null,\"unaryNumericMatcherData\":null,\"betweenMatcherData\":null,\"booleanMatcherData\":null,\"dependencyMatcherData\":null,\"stringMatcherData\":null}]},\"partitions\":[{\"treatment\":\"on\",\"size\":100},{\"treatment\":\"off\",\"size\":0}],\"label\":\"in segment android_test\"}]}],\"since\":1648733409158,\"till\":1648733409158}"; new CountDownLatch(1).await(500, TimeUnit.MILLISECONDS); return new MockResponse().setResponseCode(200) - .setBody(splitChange); + .setBody(Json.toJson(TargetingRulesChange.create(Json.fromJson(splitChange, SplitChange.class)))); } else if (request.getPath().contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else { diff --git a/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java b/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java index a12642bee..a374460b7 100644 --- a/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java +++ b/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java @@ -261,7 +261,7 @@ private void loadSplitChanges() { } private void insertSplitsIntoDb() { - SplitChange change = Json.fromJson(mJsonChanges.get(0), SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString(mJsonChanges.get(0)); List entities = new ArrayList<>(); for (Split split : change.splits) { String splitName = split.name; diff --git a/src/androidTest/java/tests/integration/streaming/ControlTest.java b/src/androidTest/java/tests/integration/streaming/ControlTest.java index a2eb0cb8e..9be4dd28f 100644 --- a/src/androidTest/java/tests/integration/streaming/ControlTest.java +++ b/src/androidTest/java/tests/integration/streaming/ControlTest.java @@ -35,6 +35,7 @@ import io.split.android.client.SplitFactory; import io.split.android.client.api.Key; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.MySegmentEntity; @@ -273,10 +274,10 @@ private String loadMockedData(String fileName) { private String loadSplitChanges() { String jsonChange = new FileHelper().loadFileContent(mContext, "simple_split.json"); - SplitChange change = Json.fromJson(jsonChange, SplitChange.class); + SplitChange change = Json.fromJson(jsonChange, TargetingRulesChange.class).getFeatureFlagsChange(); change.since = 500; change.till = 500; - return Json.toJson(change); + return Json.toJson(TargetingRulesChange.create(change)); } private void pushMySegmentMessage() { diff --git a/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java b/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java index d816ee747..ad01c035b 100644 --- a/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java +++ b/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java @@ -37,6 +37,7 @@ import io.split.android.client.dtos.KeyImpression; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; @@ -228,14 +229,14 @@ public HttpStreamResponseMock getStreamResponse(URI uri) { } private void loadSplitChanges() { - mSplitChange = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + mSplitChange = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); - SplitChange c1 = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + SplitChange c1 = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); - SplitChange c2 = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + SplitChange c2 = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); mSplitChange.splits.get(0).name = "SPLIT_1"; Split split = c1.splits.get(0); @@ -249,7 +250,7 @@ private void loadSplitChanges() { private String getSplitChanges() { mSplitChange.splits.get(0).changeNumber = CHANGE_NUMBER; mSplitChange.till = CHANGE_NUMBER; - return Json.toJson(mSplitChange); + return Json.toJson(TargetingRulesChange.create(mSplitChange)); } private String loadMockedData(String fileName) { diff --git a/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java b/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java index 07ac91545..6985d990c 100644 --- a/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java +++ b/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java @@ -35,6 +35,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.GeneralInfoEntity; @@ -407,8 +408,8 @@ private void pushInitialId() { } private String getChanges(String treatment, long since, long till) { - SplitChange change = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); change.since = since; change.till = till; Split split = change.splits.get(0); @@ -420,7 +421,7 @@ private String getChanges(String treatment, long since, long till) { partition.size = 0; } } - return Json.toJson(change); + return Json.toJson(TargetingRulesChange.create(change)); } private void loadChanges() { diff --git a/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java b/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java index 45b0369d5..343e852bb 100644 --- a/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java +++ b/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java @@ -35,6 +35,7 @@ import io.split.android.client.api.Key; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.GeneralInfoEntity; @@ -221,13 +222,13 @@ private void pushMessage(String fileName) { } private void loadSplitChanges() { - SplitChange change = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); Split split = change.splits.get(0); split.name = "test_feature_1"; - mSplitChange = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + mSplitChange = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); mSplitChange.splits.add(split); } @@ -244,7 +245,7 @@ private String getSplitChanges(int hit) { split.defaultTreatment = "off"; mSplitChange.since = CHANGE_NUMBER; mSplitChange.till = CHANGE_NUMBER; - return Json.toJson(mSplitChange); + return Json.toJson(TargetingRulesChange.create(mSplitChange)); } private Split parseEntity(SplitEntity entity) { diff --git a/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java b/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java index 3675b4612..d4773eb06 100644 --- a/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java +++ b/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java @@ -34,6 +34,7 @@ import io.split.android.client.api.Key; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.GeneralInfoEntity; @@ -214,15 +215,15 @@ private void pushMessage(String fileName) { } private void loadSplitChanges() { - mSplitChange = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + mSplitChange = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); } private String getSplitChanges(int hit) { mSplitChange.splits.get(0).changeNumber = CHANGE_NUMBER; mSplitChange.since = CHANGE_NUMBER; mSplitChange.till = CHANGE_NUMBER; - return Json.toJson(mSplitChange); + return Json.toJson(TargetingRulesChange.create(mSplitChange)); } private Split parseEntity(SplitEntity entity) { diff --git a/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java b/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java index 8f9e2490a..7aea63f99 100644 --- a/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java +++ b/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java @@ -119,7 +119,7 @@ public MockResponse dispatch(RecordedRequest request) { } else if (path.contains("/splitChanges")) { long changeNumber = -1; return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\":" + (changeNumber + 1000) + ", \"till\":" + (changeNumber + 1000) + "}"); + .setBody(IntegrationHelper.emptySplitChanges(changeNumber + 1000)); } else if (path.contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else if (path.contains("metrics/usage")) { @@ -219,7 +219,7 @@ public MockResponse dispatch(RecordedRequest request) { } else if (path.contains("/splitChanges")) { long changeNumber = -1; return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\":" + (changeNumber + 1000) + ", \"till\":" + (changeNumber + 1000) + "}"); + .setBody(IntegrationHelper.emptySplitChanges(changeNumber + 1000)); } else if (path.contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else if (path.contains("metrics/usage")) { @@ -272,7 +272,7 @@ public MockResponse dispatch(RecordedRequest request) { } else if (path.contains("/splitChanges")) { long changeNumber = -1; return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\":" + (changeNumber + 1000) + ", \"till\":" + (changeNumber + 1000) + "}"); + .setBody(IntegrationHelper.emptySplitChanges(changeNumber + 1000)); } else if (path.contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else if (path.contains("metrics/usage")) { @@ -375,7 +375,7 @@ private List getSplitListFromJson() { FileHelper fileHelper = new FileHelper(); String s = fileHelper.loadFileContent(mContext, "splitchanges_int_test.json"); - SplitChange changes = Json.fromJson(s, SplitChange.class); + SplitChange changes = IntegrationHelper.getChangeFromJsonString(s); return changes.splits; } @@ -393,7 +393,7 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio } else if (path.contains("/splitChanges")) { long changeNumber = -1; return new MockResponse().setResponseCode(200) - .setBody("{\"splits\":[], \"since\":" + (changeNumber + 1000) + ", \"till\":" + (changeNumber + 1000) + "}"); + .setBody(IntegrationHelper.emptySplitChanges(changeNumber + 1000)); } else if (path.contains("/events/bulk")) { return new MockResponse().setResponseCode(200); } else if (path.contains("/metrics")) { diff --git a/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java b/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java index 0cb14611d..be477b42a 100644 --- a/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java +++ b/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java @@ -278,10 +278,6 @@ public MockResponse dispatch(RecordedRequest request) throws InterruptedExceptio } private String loadSplitChanges() { - FileHelper fileHelper = new FileHelper(); - String change = fileHelper.loadFileContent(mContext, "split_changes_imp_toggle.json"); - SplitChange parsedChange = Json.fromJson(change, SplitChange.class); - parsedChange.since = parsedChange.till; - return Json.toJson(parsedChange); + return IntegrationHelper.loadSplitChanges(mContext, "split_changes_imp_toggle.json"); } } diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt b/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt index 16b224947..46017e3e1 100644 --- a/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt +++ b/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt @@ -7,6 +7,7 @@ import helper.* import io.split.android.client.SplitClient import io.split.android.client.SplitFactory import io.split.android.client.dtos.SplitChange +import io.split.android.client.dtos.TargetingRulesChange import io.split.android.client.events.SplitEvent import io.split.android.client.events.SplitEventTask import io.split.android.client.network.HttpMethod @@ -267,8 +268,8 @@ class UserConsentModeDebugTest { private fun loadSplitChanges(): String? { val fileHelper = FileHelper() val change = fileHelper.loadFileContent(mContext, "split_changes_1.json") - val parsedChange = Json.fromJson(change, SplitChange::class.java) + val parsedChange = Json.fromJson(change, TargetingRulesChange::class.java).featureFlagsChange parsedChange.since = parsedChange.till - return Json.toJson(parsedChange) + return Json.toJson(TargetingRulesChange.create(parsedChange)) } } diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt b/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt index fd8e7b4cc..6a509f422 100644 --- a/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt +++ b/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt @@ -7,6 +7,7 @@ import helper.* import io.split.android.client.SplitClient import io.split.android.client.SplitFactory import io.split.android.client.dtos.SplitChange +import io.split.android.client.dtos.TargetingRulesChange import io.split.android.client.events.SplitEvent import io.split.android.client.events.SplitEventTask import io.split.android.client.network.HttpMethod @@ -274,8 +275,8 @@ class UserConsentModeNoneTest { private fun loadSplitChanges(): String? { val fileHelper = FileHelper() val change = fileHelper.loadFileContent(mContext, "split_changes_1.json") - val parsedChange = Json.fromJson(change, SplitChange::class.java) + val parsedChange = Json.fromJson(change, TargetingRulesChange::class.java).featureFlagsChange parsedChange.since = parsedChange.till - return Json.toJson(parsedChange) + return Json.toJson(TargetingRulesChange.create(parsedChange)) } } diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt b/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt index ea7580626..210b5ccf3 100644 --- a/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt +++ b/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt @@ -7,6 +7,7 @@ import helper.* import io.split.android.client.SplitClient import io.split.android.client.SplitFactory import io.split.android.client.dtos.SplitChange +import io.split.android.client.dtos.TargetingRulesChange import io.split.android.client.events.SplitEvent import io.split.android.client.events.SplitEventTask import io.split.android.client.network.HttpMethod @@ -279,8 +280,8 @@ class UserConsentModeOptimizedTest { private fun loadSplitChanges(): String? { val fileHelper = FileHelper() val change = fileHelper.loadFileContent(mContext, "split_changes_1.json") - val parsedChange = Json.fromJson(change, SplitChange::class.java) + val parsedChange = Json.fromJson(change, TargetingRulesChange::class.java).featureFlagsChange parsedChange.since = parsedChange.till - return Json.toJson(parsedChange) + return Json.toJson(TargetingRulesChange.create(parsedChange)) } } diff --git a/src/androidTest/java/tests/service/SdkUpdatePollingTest.java b/src/androidTest/java/tests/service/SdkUpdatePollingTest.java index ee20e6bd6..e04afdbe4 100644 --- a/src/androidTest/java/tests/service/SdkUpdatePollingTest.java +++ b/src/androidTest/java/tests/service/SdkUpdatePollingTest.java @@ -36,6 +36,7 @@ import io.split.android.client.dtos.Partition; import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEvent; import io.split.android.client.network.HttpMethod; import io.split.android.client.storage.db.GeneralInfoEntity; @@ -347,8 +348,8 @@ private void pushInitialId() { } private String getChanges(String treatment, long since, long till) { - SplitChange change = Json.fromJson( - loadMockedData("splitchanges_int_test.json"), SplitChange.class); + SplitChange change = IntegrationHelper.getChangeFromJsonString( + loadMockedData("splitchanges_int_test.json")); change.since = since; change.till = till; Split split = change.splits.get(0); @@ -360,7 +361,7 @@ private String getChanges(String treatment, long since, long till) { partition.size = 0; } } - return Json.toJson(change); + return Json.toJson(TargetingRulesChange.create(change)); } private void loadChanges() { diff --git a/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java b/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java new file mode 100644 index 000000000..8d99b2f21 --- /dev/null +++ b/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java @@ -0,0 +1,41 @@ +package io.split.android.client.dtos; + +import androidx.annotation.VisibleForTesting; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +public class RuleBasedSegmentChange { + + @SerializedName("s") + private long since; + + @SerializedName("t") + private long till; + + @SerializedName("d") + private List segments; + + public long getSince() { + return since; + } + + public long getTill() { + return till; + } + + public List getSegments() { + return segments; + } + + @VisibleForTesting + public static RuleBasedSegmentChange createEmpty() { + RuleBasedSegmentChange ruleBasedSegmentChange = new RuleBasedSegmentChange(); + ruleBasedSegmentChange.segments = new ArrayList<>(); + ruleBasedSegmentChange.since = -1; + ruleBasedSegmentChange.till = -1; + return ruleBasedSegmentChange; + } +} diff --git a/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java b/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java new file mode 100644 index 000000000..b2ff74867 --- /dev/null +++ b/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java @@ -0,0 +1,29 @@ +package io.split.android.client.dtos; + +import androidx.annotation.VisibleForTesting; + +import com.google.gson.annotations.SerializedName; + +public class TargetingRulesChange { + @SerializedName("ff") + private SplitChange ff; + + @SerializedName("rbs") + private RuleBasedSegmentChange rbs; + + public SplitChange getFeatureFlagsChange() { + return ff; + } + + public RuleBasedSegmentChange getRuleBasedSegmentsChange() { + return rbs; + } + + @VisibleForTesting + public static TargetingRulesChange create(SplitChange splitChange) { + TargetingRulesChange targetingRulesChange = new TargetingRulesChange(); + targetingRulesChange.ff = splitChange; + targetingRulesChange.rbs = new RuleBasedSegmentChange(); + return targetingRulesChange; + } +} diff --git a/src/main/java/io/split/android/client/service/ServiceFactory.java b/src/main/java/io/split/android/client/service/ServiceFactory.java index 9af8f5093..74a9411c8 100644 --- a/src/main/java/io/split/android/client/service/ServiceFactory.java +++ b/src/main/java/io/split/android/client/service/ServiceFactory.java @@ -8,7 +8,7 @@ import io.split.android.client.dtos.AllSegmentsChange; import io.split.android.client.dtos.Event; import io.split.android.client.dtos.KeyImpression; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.network.HttpClient; import io.split.android.client.network.SdkTargetPath; import io.split.android.client.service.events.EventsRequestBodySerializer; @@ -23,7 +23,7 @@ import io.split.android.client.service.impressions.unique.MTK; import io.split.android.client.service.impressions.unique.MTKRequestBodySerializer; import io.split.android.client.service.mysegments.AllSegmentsResponseParser; -import io.split.android.client.service.splits.SplitChangeResponseParser; +import io.split.android.client.service.rules.TargetingRulesResponseParser; import io.split.android.client.service.sseauthentication.SseAuthenticationResponseParser; import io.split.android.client.telemetry.TelemetryConfigBodySerializer; import io.split.android.client.telemetry.TelemetryStatsBodySerializer; @@ -33,14 +33,14 @@ @RestrictTo(RestrictTo.Scope.LIBRARY) public class ServiceFactory { - public static HttpFetcher getSplitsFetcher( + public static HttpFetcher getSplitsFetcher( HttpClient httpClient, String endPoint, String splitFilterQueryString) throws URISyntaxException { return new HttpFetcherImpl<>(httpClient, SdkTargetPath.splitChanges(endPoint, splitFilterQueryString), - new SplitChangeResponseParser()); + new TargetingRulesResponseParser()); } public static HttpFetcher getMySegmentsFetcher( diff --git a/src/main/java/io/split/android/client/service/SplitApiFacade.java b/src/main/java/io/split/android/client/service/SplitApiFacade.java index bad8763c6..9f5c93b78 100644 --- a/src/main/java/io/split/android/client/service/SplitApiFacade.java +++ b/src/main/java/io/split/android/client/service/SplitApiFacade.java @@ -9,7 +9,7 @@ import io.split.android.client.dtos.AllSegmentsChange; import io.split.android.client.dtos.Event; import io.split.android.client.dtos.KeyImpression; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.service.http.HttpFetcher; import io.split.android.client.service.http.HttpRecorder; import io.split.android.client.service.http.mysegments.MySegmentsFetcherFactory; @@ -20,7 +20,7 @@ import io.split.android.client.telemetry.model.Stats; public class SplitApiFacade { - private final HttpFetcher mSplitFetcher; + private final HttpFetcher mSplitFetcher; private final MySegmentsFetcherFactory mMySegmentsFetcherFactory; private final HttpFetcher mSseAuthenticationFetcher; private final HttpRecorder> mEventsRecorder; @@ -30,7 +30,7 @@ public class SplitApiFacade { private final HttpRecorder mTelemetryConfigRecorder; private final HttpRecorder mTelemetryStatsRecorder; - public SplitApiFacade(@NonNull HttpFetcher splitFetcher, + public SplitApiFacade(@NonNull HttpFetcher splitFetcher, @NonNull MySegmentsFetcherFactory mySegmentsFetcherFactory, @NonNull HttpFetcher sseAuthenticationFetcher, @NonNull HttpRecorder> eventsRecorder, @@ -50,7 +50,7 @@ public SplitApiFacade(@NonNull HttpFetcher splitFetcher, mTelemetryStatsRecorder = checkNotNull(telemetryStatsRecorder); } - public HttpFetcher getSplitFetcher() { + public HttpFetcher getSplitFetcher() { return mSplitFetcher; } diff --git a/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java b/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java new file mode 100644 index 000000000..4ea94d9e0 --- /dev/null +++ b/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java @@ -0,0 +1,22 @@ +package io.split.android.client.service.rules; + +import com.google.gson.JsonSyntaxException; + +import io.split.android.client.dtos.TargetingRulesChange; +import io.split.android.client.service.http.HttpResponseParser; +import io.split.android.client.service.http.HttpResponseParserException; +import io.split.android.client.utils.Json; + +public class TargetingRulesResponseParser implements HttpResponseParser { + + @Override + public TargetingRulesChange parse(String responseData) throws HttpResponseParserException { + try { + return Json.fromJson(responseData, TargetingRulesChange.class); + } catch (JsonSyntaxException e) { + throw new HttpResponseParserException("Syntax error parsing my segments http response: " + e.getLocalizedMessage()); + } catch (Exception e) { + throw new HttpResponseParserException("Unknown error parsing my segments http response: " + e.getLocalizedMessage()); + } + } +} diff --git a/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java b/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java index 17e136fb7..34ee92989 100644 --- a/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java +++ b/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java @@ -13,6 +13,7 @@ import java.util.concurrent.TimeUnit; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.network.SplitHttpHeadersBuilder; import io.split.android.client.service.ServiceConstants; import io.split.android.client.service.executor.SplitTaskExecutionInfo; @@ -33,14 +34,14 @@ public class SplitsSyncHelper { private static final String TILL_PARAM = "till"; private static final int ON_DEMAND_FETCH_BACKOFF_MAX_WAIT = ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_WAIT; - private final HttpFetcher mSplitFetcher; + private final HttpFetcher mSplitFetcher; private final SplitsStorage mSplitsStorage; private final SplitChangeProcessor mSplitChangeProcessor; private final TelemetryRuntimeProducer mTelemetryRuntimeProducer; private final BackoffCounter mBackoffCounter; private final String mFlagsSpec; - public SplitsSyncHelper(@NonNull HttpFetcher splitFetcher, + public SplitsSyncHelper(@NonNull HttpFetcher splitFetcher, @NonNull SplitsStorage splitsStorage, @NonNull SplitChangeProcessor splitChangeProcessor, @NonNull TelemetryRuntimeProducer telemetryRuntimeProducer, @@ -54,7 +55,7 @@ public SplitsSyncHelper(@NonNull HttpFetcher splitFetcher, } @VisibleForTesting - public SplitsSyncHelper(@NonNull HttpFetcher splitFetcher, + public SplitsSyncHelper(@NonNull HttpFetcher splitFetcher, @NonNull SplitsStorage splitsStorage, @NonNull SplitChangeProcessor splitChangeProcessor, @NonNull TelemetryRuntimeProducer telemetryRuntimeProducer, @@ -153,7 +154,8 @@ private long fetchUntil(long till, boolean clearBeforeUpdate, boolean avoidCache return changeNumber; } - SplitChange splitChange = fetchSplits(changeNumber, avoidCache, withCdnByPass); + TargetingRulesChange targetingRulesChange = fetchSplits(changeNumber, avoidCache, withCdnByPass); + SplitChange splitChange = targetingRulesChange.getFeatureFlagsChange(); // TODO updateStorage(shouldClearBeforeUpdate, splitChange); shouldClearBeforeUpdate = false; @@ -164,7 +166,7 @@ private long fetchUntil(long till, boolean clearBeforeUpdate, boolean avoidCache } } - private SplitChange fetchSplits(long till, boolean avoidCache, boolean withCdnByPass) throws HttpFetcherException { + private TargetingRulesChange fetchSplits(long till, boolean avoidCache, boolean withCdnByPass) throws HttpFetcherException { Map params = new LinkedHashMap<>(); if (mFlagsSpec != null && !mFlagsSpec.trim().isEmpty()) { params.put(FLAGS_SPEC_PARAM, mFlagsSpec); diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java b/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java index dd572e48a..e234f487f 100644 --- a/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java +++ b/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java @@ -2,7 +2,7 @@ import java.net.URISyntaxException; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.network.HttpClient; import io.split.android.client.service.ServiceFactory; import io.split.android.client.service.http.HttpFetcher; @@ -17,7 +17,7 @@ class FetcherProvider { mEndpoint = endpoint; } - public HttpFetcher provideFetcher(String splitsFilterQueryString) throws URISyntaxException { + public HttpFetcher provideFetcher(String splitsFilterQueryString) throws URISyntaxException { return ServiceFactory.getSplitsFetcher(mHttpClient, mEndpoint, splitsFilterQueryString); } } diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java b/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java index 427b690e5..83cec1c58 100644 --- a/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java +++ b/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java @@ -1,6 +1,6 @@ package io.split.android.client.service.workmanager.splits; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.service.http.HttpFetcher; import io.split.android.client.service.splits.SplitChangeProcessor; import io.split.android.client.service.splits.SplitsSyncHelper; @@ -9,10 +9,10 @@ class SyncHelperProvider { - SplitsSyncHelper provideSplitsSyncHelper(HttpFetcher splitsFetcher, SplitsStorage splitsStorage, - SplitChangeProcessor mSplitChangeProcessor, - TelemetryStorage telemetryStorage, - String mFlagsSpec) { + SplitsSyncHelper provideSplitsSyncHelper(HttpFetcher splitsFetcher, SplitsStorage splitsStorage, + SplitChangeProcessor mSplitChangeProcessor, + TelemetryStorage telemetryStorage, + String mFlagsSpec) { return new SplitsSyncHelper(splitsFetcher, splitsStorage, mSplitChangeProcessor, telemetryStorage, diff --git a/src/main/java/io/split/android/engine/experiments/ParserCommons.java b/src/main/java/io/split/android/engine/experiments/ParserCommons.java index 8bfdcd6e8..aeb5d1259 100644 --- a/src/main/java/io/split/android/engine/experiments/ParserCommons.java +++ b/src/main/java/io/split/android/engine/experiments/ParserCommons.java @@ -46,7 +46,8 @@ public class ParserCommons { - public static final int CONDITIONS_UPPER_LIMIT = 50; + private static final int CONDITIONS_UPPER_LIMIT = 50; + private final MySegmentsStorageContainer mMySegmentsStorageContainer; private final MySegmentsStorageContainer mMyLargeSegmentsStorageContainer; private RuleBasedSegmentStorage mRuleBasedSegmentStorage; diff --git a/src/test/java/io/split/android/client/network/HttpClientTest.java b/src/test/java/io/split/android/client/network/HttpClientTest.java index b036ec5b8..c78b52696 100644 --- a/src/test/java/io/split/android/client/network/HttpClientTest.java +++ b/src/test/java/io/split/android/client/network/HttpClientTest.java @@ -36,6 +36,7 @@ import io.split.android.client.dtos.AllSegmentsChange; import io.split.android.client.dtos.Event; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.dtos.TestImpressions; import io.split.android.client.utils.Json; import io.split.android.helpers.FileHelper; @@ -149,7 +150,7 @@ public void severalRequest() throws Exception { Assert.assertTrue(mySegments.contains("groupb")); // Assert split changes - SplitChange splitChange = Json.fromJson(splitChangeResp.getData(), SplitChange.class); + SplitChange splitChange = Json.fromJson(splitChangeResp.getData(), TargetingRulesChange.class).getFeatureFlagsChange(); Assert.assertEquals(200, splitChangeResp.getHttpStatus()); assertTrue(splitChangeResp.isSuccess()); Assert.assertEquals(-1, splitChange.since); diff --git a/src/test/java/io/split/android/client/service/HttpFetcherTest.java b/src/test/java/io/split/android/client/service/HttpFetcherTest.java index 36c85ffe0..7c3e5775d 100644 --- a/src/test/java/io/split/android/client/service/HttpFetcherTest.java +++ b/src/test/java/io/split/android/client/service/HttpFetcherTest.java @@ -27,6 +27,7 @@ import io.split.android.client.dtos.AllSegmentsChange; import io.split.android.client.dtos.SegmentsChange; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.network.HttpClient; import io.split.android.client.network.HttpException; import io.split.android.client.network.HttpMethod; @@ -40,7 +41,7 @@ import io.split.android.client.service.http.HttpFetcherImpl; import io.split.android.client.service.http.HttpResponseParser; import io.split.android.client.service.mysegments.AllSegmentsResponseParser; -import io.split.android.client.service.splits.SplitChangeResponseParser; +import io.split.android.client.service.rules.TargetingRulesResponseParser; public class HttpFetcherTest { @@ -52,7 +53,7 @@ public class HttpFetcherTest { private URI mUrl; private URI mSplitChangesUrl; private URI mMySegmentsUrl; - private final HttpResponseParser mSplitChangeResponseParser = new SplitChangeResponseParser(); + private final HttpResponseParser mSplitChangeResponseParser = new TargetingRulesResponseParser(); private final HttpResponseParser mMySegmentsResponseParser = new AllSegmentsResponseParser(); @Before @@ -67,7 +68,7 @@ public void setup() throws URISyntaxException { public void testNoReachableUrl() throws URISyntaxException { - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mUrl, mSplitChangeResponseParser); boolean isReachable = true; try { Map params = new HashMap<>(); @@ -90,12 +91,12 @@ public void testSuccessfulSplitChangeFetch() throws URISyntaxException, HttpExce when(request.execute()).thenReturn(response); when(mClientMock.request(uri, HttpMethod.GET, null, null)).thenReturn(request); - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); SplitChange change = null; try { Map params = new HashMap<>(); params.put("since", -1); - change = fetcher.execute(params, null); + change = fetcher.execute(params, null).getFeatureFlagsChange(); // TODO } catch (HttpFetcherException e) { exceptionWasThrown = true; } @@ -116,22 +117,24 @@ public void tesNonEmptyHeaderSplitChangesFetch() throws URISyntaxException, Http URI uri = new URIBuilder(mSplitChangesUrl).addParameter("since", "" + -1).build(); HttpRequest request = mock(HttpRequest.class); - HttpResponse response = new HttpResponseImpl(200, dummySplitChangeResponse()); + when(request.execute()).thenReturn(response); when(mClientMock.request(uri, HttpMethod.GET, null, headers)).thenReturn(request); - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); try { Map params = new HashMap<>(); params.put("since", -1); - SplitChange change = fetcher.execute(params, headers); + SplitChange change = fetcher.execute(params, headers).getFeatureFlagsChange(); // TODO } catch (HttpFetcherException e) { + e.printStackTrace(); exceptionWasThrown = true; } ArgumentCaptor> headersCaptor = ArgumentCaptor.forClass(Map.class); + Assert.assertFalse(exceptionWasThrown); verify(mClientMock).request(eq(uri), eq(HttpMethod.GET), eq(null), headersCaptor.capture()); Assert.assertEquals("value1", headersCaptor.getValue().get("header1")); } @@ -145,13 +148,13 @@ public void testFailedResponse() throws URISyntaxException, HttpException { when(request.execute()).thenReturn(response); when(mClientMock.request(uri, HttpMethod.GET, null, null)).thenReturn(request); - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); SplitChange change = null; boolean failed = false; try { Map params = new HashMap<>(); params.put("since", -1); - change = fetcher.execute(params, null); + change = fetcher.execute(params, null).getFeatureFlagsChange(); // TODO } catch (HttpFetcherException e) { failed = true; } @@ -169,13 +172,13 @@ public void testWrongResponse() throws URISyntaxException, HttpException { when(request.execute()).thenReturn(response); when(mClientMock.request(uri, HttpMethod.GET, null, null)).thenReturn(request); - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); SplitChange change = null; boolean failed = false; try { Map params = new HashMap<>(); params.put("since", -1); - change = fetcher.execute(params, null); + change = fetcher.execute(params, null).getFeatureFlagsChange(); // TODO } catch (HttpFetcherException e) { failed = true; } @@ -261,7 +264,7 @@ public void testHandleParserExceptionFetch() throws URISyntaxException, HttpExce @Test public void paramOrderIsCorrect() throws HttpFetcherException, HttpException { - HttpFetcher fetcher = getSplitChangeHttpFetcher(); + HttpFetcher fetcher = getSplitChangeHttpFetcher(); Map params = new LinkedHashMap<>(); params.put("s", "1.1"); @@ -276,7 +279,7 @@ public void paramOrderIsCorrect() throws HttpFetcherException, HttpException { @Test public void paramOrderWithoutTillIsCorrect() throws HttpException, HttpFetcherException { - HttpFetcher fetcher = getSplitChangeHttpFetcher(); + HttpFetcher fetcher = getSplitChangeHttpFetcher(); Map params = new LinkedHashMap<>(); params.put("s", "1.1"); @@ -290,7 +293,7 @@ public void paramOrderWithoutTillIsCorrect() throws HttpException, HttpFetcherEx @Test public void paramOrderWithoutSpecIsCorrect() throws HttpException, HttpFetcherException { - HttpFetcher fetcher = getSplitChangeHttpFetcher(); + HttpFetcher fetcher = getSplitChangeHttpFetcher(); Map params = new LinkedHashMap<>(); params.put("since", "-1"); @@ -304,7 +307,7 @@ public void paramOrderWithoutSpecIsCorrect() throws HttpException, HttpFetcherEx @Test public void paramOrderWithoutSetsIsCorrect() throws HttpException { - HttpFetcher fetcher = getSplitChangeHttpFetcher(); + HttpFetcher fetcher = getSplitChangeHttpFetcher(); Map params = new LinkedHashMap<>(); params.put("till", "100"); @@ -322,7 +325,7 @@ public void paramOrderWithoutSetsIsCorrect() throws HttpException { @Test public void httpExceptionWithStatusCodeAddsStatusCodeToHttpFetcherException() throws HttpException { - HttpFetcher fetcher = getSplitChangeHttpFetcher(); + HttpFetcher fetcher = getSplitChangeHttpFetcher(); HttpRequest request = mock(HttpRequest.class); when(request.execute()).thenThrow(new HttpException("Not found", 404)); @@ -341,12 +344,12 @@ public void httpExceptionWithStatusCodeAddsStatusCodeToHttpFetcherException() th } @NonNull - private HttpFetcher getSplitChangeHttpFetcher() throws HttpException { + private HttpFetcher getSplitChangeHttpFetcher() throws HttpException { HttpRequest mockRequest = mock(HttpRequest.class); when(mockRequest.execute()).thenReturn(new HttpResponseImpl(200, dummySplitChangeResponse())); when(mClientMock.request(any(), any(), any(), any())).thenReturn(mockRequest); - HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); + HttpFetcher fetcher = new HttpFetcherImpl<>(mClientMock, mSplitChangesUrl, mSplitChangeResponseParser); return fetcher; } @@ -361,9 +364,26 @@ public boolean matches(URI argument) { } private String dummySplitChangeResponse() { - return "{\"splits\":[{\"name\":\"sample_feature\", \"status\":\"ACTIVE\"}],\n" + - " \"since\":-1,\n" + - " \"till\":100}"; +// return "{\"splits\":[{\"name\":\"sample_feature\", \"status\":\"ACTIVE\"}],\n" + +// " \"since\":-1,\n" + +// " \"till\":100}"; + return "{\n" + + " \"ff\": {\n" + + " \"splits\": [\n" + + " {\n" + + " \"name\": \"sample_feature\",\n" + + " \"status\": \"ACTIVE\"\n" + + " }\n" + + " ],\n" + + " \"since\": -1,\n" + + " \"till\": 100\n" + + " },\n" + + " \"rbs\": {\n" + + " \"d\": [],\n" + + " \"s\": -1,\n" + + " \"t\": 50\n" + + " }\n" + + "}"; } private String dummyMySegmentsResponse() { diff --git a/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java b/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java index 2ff74c234..066c3c1bf 100644 --- a/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java +++ b/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java @@ -28,6 +28,7 @@ import java.util.Map; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.network.SplitHttpHeadersBuilder; import io.split.android.client.service.executor.SplitTaskExecutionInfo; import io.split.android.client.service.executor.SplitTaskExecutionStatus; @@ -45,10 +46,10 @@ public class SplitsSyncHelperTest { @Mock - HttpFetcher mSplitsFetcher; + HttpFetcher mSplitsFetcher; @Mock SplitsStorage mSplitsStorage; - SplitChange mSplitChange = null; + TargetingRulesChange mTargetingRulesChange = null; @Spy SplitChangeProcessor mSplitChangeProcessor; @Mock @@ -87,17 +88,17 @@ public void tearDown() { public void correctSyncExecution() throws HttpFetcherException { // On correct execution without having clear param // should execute fetcher, update storage and avoid clearing splits cache - when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mSplitChange); - SplitChange secondSplitChange = mSplitChange; - secondSplitChange.since = mSplitChange.till; - when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(secondSplitChange); + when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mTargetingRulesChange); + SplitChange secondSplitChange = mTargetingRulesChange.getFeatureFlagsChange(); // TODO + secondSplitChange.since = mTargetingRulesChange.getFeatureFlagsChange().till; + when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(TargetingRulesChange.create(secondSplitChange)); when(mSplitsStorage.getTill()).thenReturn(-1L); SplitTaskExecutionInfo result = mSplitsSyncHelper.sync(-1, false, false, ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES); verify(mSplitsFetcher, times(1)).execute(mDefaultParams, null); verify(mSplitsStorage, times(1)).update(any()); - verify(mSplitChangeProcessor, times(1)).process(mSplitChange); + verify(mSplitChangeProcessor, times(1)).process(mTargetingRulesChange.getFeatureFlagsChange()); // TODO verify(mSplitsStorage, never()).clear(); assertEquals(SplitTaskExecutionStatus.SUCCESS, result.getStatus()); } @@ -109,17 +110,17 @@ public void correctSyncExecutionNoCache() throws HttpFetcherException { Map headers = new HashMap<>(); headers.put(SplitHttpHeadersBuilder.CACHE_CONTROL_HEADER, SplitHttpHeadersBuilder.CACHE_CONTROL_NO_CACHE); - when(mSplitsFetcher.execute(mDefaultParams, headers)).thenReturn(mSplitChange); - SplitChange secondSplitChange = mSplitChange; - secondSplitChange.since = mSplitChange.till; - when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(secondSplitChange); + when(mSplitsFetcher.execute(mDefaultParams, headers)).thenReturn(mTargetingRulesChange); + SplitChange secondSplitChange = mTargetingRulesChange.getFeatureFlagsChange(); // TODO + secondSplitChange.since = mTargetingRulesChange.getFeatureFlagsChange().till; + when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(TargetingRulesChange.create(secondSplitChange)); when(mSplitsStorage.getTill()).thenReturn(-1L); SplitTaskExecutionInfo result = mSplitsSyncHelper.sync(-1, ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES); verify(mSplitsFetcher, times(1)).execute(mDefaultParams, headers); verify(mSplitsStorage, times(1)).update(any()); - verify(mSplitChangeProcessor, times(1)).process(mSplitChange); + verify(mSplitChangeProcessor, times(1)).process(mTargetingRulesChange.getFeatureFlagsChange()); // TODO verify(mSplitsStorage, never()).clear(); assertEquals(SplitTaskExecutionStatus.SUCCESS, result.getStatus()); } @@ -135,13 +136,13 @@ public void fetcherSyncException() throws HttpFetcherException { verify(mSplitsFetcher, times(1)).execute(mDefaultParams, null); verify(mSplitsStorage, never()).update(any()); verify(mSplitsStorage, never()).clear(); - verify(mSplitChangeProcessor, never()).process(mSplitChange); + verify(mSplitChangeProcessor, never()).process(mTargetingRulesChange.getFeatureFlagsChange()); // TODO assertEquals(SplitTaskExecutionStatus.ERROR, result.getStatus()); } @Test public void storageException() throws HttpFetcherException { - when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mSplitChange); + when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mTargetingRulesChange); doThrow(NullPointerException.class).when(mSplitsStorage).update(any(ProcessedSplitChange.class)); when(mSplitsStorage.getTill()).thenReturn(-1L); @@ -150,17 +151,17 @@ public void storageException() throws HttpFetcherException { verify(mSplitsFetcher, times(1)).execute(mDefaultParams, null); verify(mSplitsStorage, times(1)).update(any()); verify(mSplitsStorage, times(1)).clear(); - verify(mSplitChangeProcessor, times(1)).process(mSplitChange); + verify(mSplitChangeProcessor, times(1)).process(mTargetingRulesChange.getFeatureFlagsChange()); // TODO assertEquals(SplitTaskExecutionStatus.ERROR, result.getStatus()); } @Test public void shouldClearStorageAfterFetch() throws HttpFetcherException { - when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mSplitChange); - SplitChange secondSplitChange = mSplitChange; - secondSplitChange.since = mSplitChange.till; - when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(secondSplitChange); + when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mTargetingRulesChange); + SplitChange secondSplitChange = mTargetingRulesChange.getFeatureFlagsChange(); // TODO + secondSplitChange.since = mTargetingRulesChange.getFeatureFlagsChange().till; + when(mSplitsFetcher.execute(mSecondFetchParams, null)).thenReturn(TargetingRulesChange.create(secondSplitChange)); when(mSplitsStorage.getTill()).thenReturn(-1L); SplitTaskExecutionInfo result = mSplitsSyncHelper.sync(-1, true, false, ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES); @@ -168,7 +169,7 @@ public void shouldClearStorageAfterFetch() throws HttpFetcherException { verify(mSplitsFetcher, times(1)).execute(mDefaultParams, null); verify(mSplitsStorage, times(1)).update(any()); verify(mSplitsStorage, times(1)).clear(); - verify(mSplitChangeProcessor, times(1)).process(mSplitChange); + verify(mSplitChangeProcessor, times(1)).process(mTargetingRulesChange.getFeatureFlagsChange()); // TODO assertEquals(SplitTaskExecutionStatus.SUCCESS, result.getStatus()); } @@ -186,9 +187,9 @@ public void errorIsRecordedInTelemetry() throws HttpFetcherException { @Test public void performSplitsFetchUntilSinceEqualsTill() throws HttpFetcherException { - SplitChange firstSplitChange = getSplitChange(-1, 2); - SplitChange secondSplitChange = getSplitChange(2, 3); - SplitChange thirdSplitChange = getSplitChange(3, 3); + TargetingRulesChange firstSplitChange = getSplitChange(-1, 2); + TargetingRulesChange secondSplitChange = getSplitChange(2, 3); + TargetingRulesChange thirdSplitChange = getSplitChange(3, 3); Map firstParams = getSinceParams(-1L); Map secondParams = getSinceParams(2L); Map thirdParams = getSinceParams(3L); @@ -209,15 +210,15 @@ public void performSplitsFetchUntilSinceEqualsTill() throws HttpFetcherException @Test public void performSplitFetchUntilStoredChangeNumberIsGreaterThanRequested() throws HttpFetcherException { - SplitChange firstSplitChange = getSplitChange(-1, 2); - SplitChange secondSplitChange = getSplitChange(2, 4); + SplitChange firstSplitChange = getSplitChange(-1, 2).getFeatureFlagsChange(); + SplitChange secondSplitChange = getSplitChange(2, 4).getFeatureFlagsChange(); Map firstParams = getSinceParams(-1L); Map secondParams = getSinceParams(2L); when(mSplitsStorage.getTill()).thenReturn(-1L, 2L, 4L); - when(mSplitsFetcher.execute(eq(firstParams), any())).thenReturn(firstSplitChange); - when(mSplitsFetcher.execute(eq(secondParams), any())).thenReturn(secondSplitChange); + when(mSplitsFetcher.execute(eq(firstParams), any())).thenReturn(TargetingRulesChange.create(firstSplitChange)); + when(mSplitsFetcher.execute(eq(secondParams), any())).thenReturn(TargetingRulesChange.create(secondSplitChange)); mSplitsSyncHelper.sync(3, ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES); @@ -227,7 +228,8 @@ public void performSplitFetchUntilStoredChangeNumberIsGreaterThanRequested() thr } @Test - public void syncWithClearBeforeUpdateOnlyClearsStorageOnce() { + public void syncWithClearBeforeUpdateOnlyClearsStorageOnce() throws HttpFetcherException { + when(mSplitsFetcher.execute(mDefaultParams, null)).thenReturn(mTargetingRulesChange); when(mSplitsStorage.getTill()).thenReturn(-1L, 2L, 4L); mSplitsSyncHelper.sync(3, true, false, ServiceConstants.ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES); @@ -367,9 +369,9 @@ public boolean matches(Map argument) { } private void loadSplitChanges() { - if (mSplitChange == null) { + if (mTargetingRulesChange == null) { FileHelper fileHelper = new FileHelper(); - mSplitChange = fileHelper.loadSplitChangeFromFile("split_changes_1.json"); + mTargetingRulesChange = TargetingRulesChange.create(fileHelper.loadSplitChangeFromFile("split_changes_1.json")); } } @@ -381,12 +383,12 @@ private Map getSinceParams(long since) { return params; } - private SplitChange getSplitChange(int since, int till) { + private TargetingRulesChange getSplitChange(int since, int till) { SplitChange splitChange = new SplitChange(); splitChange.since = since; splitChange.till = till; splitChange.splits = new ArrayList<>(); - return splitChange; + return TargetingRulesChange.create(splitChange); } } diff --git a/src/test/java/io/split/android/client/service/SynchronizerTest.java b/src/test/java/io/split/android/client/service/SynchronizerTest.java index 79347551f..5943b5f14 100644 --- a/src/test/java/io/split/android/client/service/SynchronizerTest.java +++ b/src/test/java/io/split/android/client/service/SynchronizerTest.java @@ -42,7 +42,7 @@ import io.split.android.client.api.Key; import io.split.android.client.dtos.Event; import io.split.android.client.dtos.KeyImpression; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.events.SplitEventsManager; import io.split.android.client.impressions.DecoratedImpression; import io.split.android.client.impressions.Impression; @@ -163,7 +163,7 @@ public void setup(SplitClientConfig splitClientConfig, ImpressionManagerConfig.M mTaskExecutor = taskExecutor; mSingleThreadedTaskExecutor = spy(new SplitTaskExecutorStub()); - HttpFetcher splitsFetcher = Mockito.mock(HttpFetcher.class); + HttpFetcher splitsFetcher = Mockito.mock(HttpFetcher.class); HttpFetcher mySegmentsFetcher = Mockito.mock(HttpFetcher.class); HttpRecorder> eventsRecorder = Mockito.mock(HttpRecorder.class); HttpRecorder> impressionsRecorder = Mockito.mock(HttpRecorder.class); diff --git a/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java b/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java new file mode 100644 index 000000000..9af50d80d --- /dev/null +++ b/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java @@ -0,0 +1,5 @@ +package io.split.android.client.service.rules; + +public class TargetingRulesResponseParserTest { + +} diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java b/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java index 1b950b365..d0caec362 100644 --- a/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java +++ b/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java @@ -13,7 +13,7 @@ import java.net.URISyntaxException; -import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.service.executor.SplitTask; import io.split.android.client.service.http.HttpFetcher; import io.split.android.client.service.splits.SplitChangeProcessor; @@ -29,7 +29,7 @@ public class SplitsSyncWorkerTaskBuilderTest { private SplitChangeProcessor mSplitChangeProcessor; private SyncHelperProvider mSplitsSyncHelperProvider; private SplitsStorage mSplitsStorage; - private HttpFetcher mSplitsFetcher; + private HttpFetcher mSplitsFetcher; private TelemetryStorage mTelemetryStorage; @Before diff --git a/src/test/java/io/split/android/helpers/FileHelper.java b/src/test/java/io/split/android/helpers/FileHelper.java index 15adcd6fd..353e05e0a 100644 --- a/src/test/java/io/split/android/helpers/FileHelper.java +++ b/src/test/java/io/split/android/helpers/FileHelper.java @@ -11,26 +11,27 @@ import io.split.android.client.dtos.Split; import io.split.android.client.dtos.SplitChange; +import io.split.android.client.dtos.TargetingRulesChange; import io.split.android.client.utils.Json; public class FileHelper { - public List loadAndParseSplitChangeFile (String name) { + public List loadAndParseSplitChangeFile(String name) { try { String content = loadFileContent(name); - SplitChange change = Json.fromJson(content, SplitChange.class); - return change.splits; + TargetingRulesChange change = Json.fromJson(content, TargetingRulesChange.class); + return change.getFeatureFlagsChange().splits; } catch (Exception e) { System.out.println("loadAndParseSplitChangeFile: Failed load file content" + e.getLocalizedMessage()); } return null; } - public SplitChange loadSplitChangeFromFile (String name) { + public SplitChange loadSplitChangeFromFile(String name) { try { String content = loadFileContent(name); - SplitChange change = Json.fromJson(content, SplitChange.class); - return change; + TargetingRulesChange change = Json.fromJson(content, TargetingRulesChange.class); + return change.getFeatureFlagsChange(); } catch (Exception e) { } return null; diff --git a/src/test/resources/split_changes_1.json b/src/test/resources/split_changes_1.json index 7d72dbbcf..70de27a0f 100644 --- a/src/test/resources/split_changes_1.json +++ b/src/test/resources/split_changes_1.json @@ -1,2576 +1,2583 @@ { - "splits":[ - { - "trafficTypeName":"account", - "name":"FACUNDO_TEST", - "trafficAllocation":59, - "trafficAllocationSeed":-2108186082, - "seed":-1947050785, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1506703262916, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "nico_test", - "othertest" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "bla" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "ff": { + "splits": [ + { + "trafficTypeName": "account", + "name": "FACUNDO_TEST", + "trafficAllocation": 59, + "trafficAllocationSeed": -2108186082, + "seed": -1947050785, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "nico_test", + "othertest" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "bla" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - }, - { - "treatment":"visa", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testing", - "trafficAllocation":100, - "trafficAllocationSeed":527505678, - "seed":-1716462249, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1506440189077, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"test_definition_as_of", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Identify_UI", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "treatment": "off", + "size": 100 + }, + { + "treatment": "visa", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testing", + "trafficAllocation": 100, + "trafficAllocationSeed": 527505678, + "seed": -1716462249, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506440189077, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "test_definition_as_of", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Identify_UI", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in split test_definition_as_of treatment [on] and not in split Identify_UI treatment [on]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"test_definition_as_of", - "treatments":[ - "off" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] + ], + "label": "in split test_definition_as_of treatment [on] and not in split Identify_UI treatment [on]" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "test_definition_as_of", + "treatments": [ + "off" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in split test_definition_as_of treatment [off]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testing222", - "trafficAllocation":100, - "trafficAllocationSeed":-397360967, - "seed":1058132210, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1505162627437, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 - }, - { - "treatment":"off", - "size":100 + ], + "label": "in split test_definition_as_of treatment [off]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testing222", + "trafficAllocation": 100, + "trafficAllocationSeed": -397360967, + "seed": 1058132210, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1505162627437, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"test222", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"a_new_split_2", - "trafficAllocation":99, - "trafficAllocationSeed":-1349440646, - "seed":-1536389703, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1505161671620, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "adil", - "bb", - "bbb", - "dd3c0800-30f1-11e7-ba78-12395d4a9634", - "pato", - "tito" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"test_copy" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "test222", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":52 - }, - { - "treatment":"off", - "size":48 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "a_new_split_2", + "trafficAllocation": 99, + "trafficAllocationSeed": -1349440646, + "seed": -1536389703, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1505161671620, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "adil", + "bb", + "bbb", + "dd3c0800-30f1-11e7-ba78-12395d4a9634", + "pato", + "tito" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"in segment all" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"asda" - }, - "matcherType":"STARTS_WITH", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ee", - "aa" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - }, + "partitions": [ { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":true, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"asda starts with [ee, aa] and not in segment segment2" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"pp" - }, - "matcherType":"PART_OF_SET", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "pato", - "adil" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":100 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "test_copy" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"pp part of [pato, adil]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"eee" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "1", - "2", - "trevorrr" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":20 - }, - { - "treatment":"off", - "size":80 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"testo", - "size":0 - } - ], - "label":"eee in list [1, 2, ...]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_string_without_attr", - "trafficAllocation":100, - "trafficAllocationSeed":-782597068, - "seed":-1682478887, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1504805281437, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 52 }, { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "something" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 48 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "in segment all" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "asda" + }, + "matcherType": "STARTS_WITH", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ee", + "aa" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": true, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment Segment3 and in list [something]" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Test", - "trafficAllocation":100, - "trafficAllocationSeed":217539832, - "seed":52164426, - "status":"ACTIVE", - "killed":true, - "defaultTreatment":"off", - "changeNumber":1504206031141, - "algo":2, - "configurations": { - "off": "{\"f1\":\"v1\"}" - }, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"sample-segment" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null - } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"demo" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "asda starts with [ee, aa] and not in segment segment2" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"employees" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "pp" + }, + "matcherType": "PART_OF_SET", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "pato", + "adil" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 + }, + { + "treatment": "testo", + "size": 0 } - ] + ], + "label": "pp part of [pato, adil]" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"sample-segment" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "eee" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "1", + "2", + "trevorrr" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 20 }, { - "keySelector":{ - "trafficType":"user", - "attribute":"fsdfsd" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "b", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 80 }, { - "keySelector":{ - "trafficType":"user", - "attribute":"asdasdasd" - }, - "matcherType":"STARTS_WITH", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "asdad", - "sa", - "das" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "testo", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":10 + ], + "label": "eee in list [1, 2, ...]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_string_without_attr", + "trafficAllocation": 100, + "trafficAllocationSeed": -782597068, + "seed": -1682478887, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1504805281437, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "something" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":90 - } - ], - "label":"in segment sample-segment and fsdfsd in list [a, b, ...] and asdasdasd does not start with [asdad, sa, ...]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Test_Save_1", - "trafficAllocation":100, - "trafficAllocationSeed":-257595325, - "seed":-665945237, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503956389520, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "1", - "12", - "123", - "23" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" + ], + "label": "in segment Segment3 and in list [something]" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Test", + "trafficAllocation": 100, + "trafficAllocationSeed": 217539832, + "seed": 52164426, + "status": "ACTIVE", + "killed": true, + "defaultTreatment": "off", + "changeNumber": 1504206031141, + "algo": 2, + "configurations": { + "off": "{\"f1\":\"v1\"}" }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "asd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "sample-segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "demo" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "employees" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "sample-segment" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "user", + "attribute": "fsdfsd" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "b", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "user", + "attribute": "asdasdasd" + }, + "matcherType": "STARTS_WITH", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "asdad", + "sa", + "das" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 + "partitions": [ + { + "treatment": "on", + "size": 10 + }, + { + "treatment": "off", + "size": 90 + } + ], + "label": "in segment sample-segment and fsdfsd in list [a, b, ...] and asdasdasd does not start with [asdad, sa, ...]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Test_Save_1", + "trafficAllocation": 100, + "trafficAllocationSeed": -257595325, + "seed": -665945237, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503956389520, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "1", + "12", + "123", + "23" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"v1", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"TEST", - "trafficAllocation":100, - "trafficAllocationSeed":-673356676, - "seed":-511119211, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503942404754, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":100 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "asd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_1", - "trafficAllocation":100, - "trafficAllocationSeed":987354894, - "seed":1292874260, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1503356075822, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":"atrib" - }, - "matcherType":"BETWEEN", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":{ - "dataType":"NUMBER", - "start":1474990940, - "end":1474990949 - }, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":95 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":5 - } - ], - "label":"atrib between 1474990940 and 1474990949" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":90 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":10 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"nico_tests", - "trafficAllocation":100, - "trafficAllocationSeed":1409699192, - "seed":-1997241870, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1501791316810, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "nico_test_browser__key" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 + }, + { + "treatment": "v1", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"employees" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "TEST", + "trafficAllocation": 100, + "trafficAllocationSeed": -673356676, + "seed": -511119211, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503942404754, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_1", + "trafficAllocation": 100, + "trafficAllocationSeed": 987354894, + "seed": 1292874260, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1503356075822, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": "atrib" + }, + "matcherType": "BETWEEN", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": { + "dataType": "NUMBER", + "start": 1474990940, + "end": 1474990949 + }, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment employees" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo2222", - "trafficAllocation":100, - "trafficAllocationSeed":1164474086, - "seed":1270508512, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1501012403336, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "aasd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 95 + }, + { + "treatment": "off", + "size": 5 } - ] + ], + "label": "atrib between 1474990940 and 1474990949" }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment2" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 90 + }, + { + "treatment": "off", + "size": 10 } - ] - }, - "partitions":[ - { - "treatment":"off", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ddddd" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "nico_tests", + "trafficAllocation": 100, + "trafficAllocationSeed": 1409699192, + "seed": -1997241870, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1501791316810, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "nico_test_browser__key" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"Segment3" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "employees" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "ppp", - "ppppp" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment employees" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo2222", + "trafficAllocation": 100, + "trafficAllocationSeed": 1164474086, + "seed": 1270508512, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1501012403336, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "aasd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"pesto", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"test_copy" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "segment2" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"pesto", - "size":100 - } - ], - "label":"whitelisted segment" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ddddd" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"off", - "size":0 - }, - { - "treatment":"on", - "size":100 - }, - { - "treatment":"pesto", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "Segment3" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"arse", - "size":0 - }, - { - "treatment":"zzzzick", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Tagging", - "trafficAllocation":100, - "trafficAllocationSeed":1910132597, - "seed":-311493896, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500590774768, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":50 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "ppp", + "ppppp" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":50 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Welcome_Page_UI", - "trafficAllocation":100, - "trafficAllocationSeed":1848523960, - "seed":1608586361, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500577256901, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "pesto", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "test_copy" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"test", - "name":"pato_test_3", - "trafficAllocation":100, - "trafficAllocationSeed":458647735, - "seed":95677506, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500510847849, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"test", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "pesto", + "size": 100 } - ] + ], + "label": "whitelisted segment" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo23", - "trafficAllocation":100, - "trafficAllocationSeed":-689658216, - "seed":1711156051, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500064145947, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"sdsd" - }, - "matcherType":"EQUAL_TO_BOOLEAN", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":true, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "off", + "size": 0 + }, + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "pesto", + "size": 0 + }, + { + "treatment": "arse", + "size": 0 + }, + { + "treatment": "zzzzick", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Tagging", + "trafficAllocation": 100, + "trafficAllocationSeed": 1910132597, + "seed": -311493896, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500590774768, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"sdsd is true" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo909090", - "trafficAllocation":100, - "trafficAllocationSeed":-1196467266, - "seed":-1998101827, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1500039488369, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":"a" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 50 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"v" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 50 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Welcome_Page_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": 1848523960, + "seed": 1608586361, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500577256901, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"asdadas" - }, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "b", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "test", + "name": "pato_test_3", + "trafficAllocation": 100, + "trafficAllocationSeed": 458647735, + "seed": 95677506, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500510847849, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "test", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"sds" - }, - "matcherType":"CONTAINS_STRING", - "negate":true, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "a", - "c", - "d" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 100 + } + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo23", + "trafficAllocation": 100, + "trafficAllocationSeed": -689658216, + "seed": 1711156051, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500064145947, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "sdsd" + }, + "matcherType": "EQUAL_TO_BOOLEAN", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": true, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 0 }, { - "keySelector":{ - "trafficType":"account", - "attribute":"xcvxv" - }, - "matcherType":"EQUAL_TO", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":{ - "dataType":"NUMBER", - "value":122 - }, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "sdsd is true" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo909090", + "trafficAllocation": 100, + "trafficAllocationSeed": -1196467266, + "seed": -1998101827, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1500039488369, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": "a" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "v" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "asdadas" + }, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "b", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "sds" + }, + "matcherType": "CONTAINS_STRING", + "negate": true, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "a", + "c", + "d" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + }, + { + "keySelector": { + "trafficType": "account", + "attribute": "xcvxv" + }, + "matcherType": "EQUAL_TO", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": { + "dataType": "NUMBER", + "value": 122 + }, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"a in list [a] and v in list [a] and asdadas in list [a, b, ...] and sds does not contain [a, c, ...] and xcvxv = 122" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "a in list [a] and v in list [a] and asdadas in list [a, b, ...] and sds does not contain [a, c, ...] and xcvxv = 122" }, - "partitions":[ - { - "treatment":"on", - "size":100 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"testo22", - "trafficAllocation":100, - "trafficAllocationSeed":1223277820, - "seed":-1152948537, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499721434259, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "testo22", + "trafficAllocation": 100, + "trafficAllocationSeed": 1223277820, + "seed": -1152948537, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499721434259, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"test-net", - "trafficAllocation":100, - "trafficAllocationSeed":-2038196969, - "seed":-862203077, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499718635999, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "test-net", + "trafficAllocation": 100, + "trafficAllocationSeed": -2038196969, + "seed": -862203077, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499718635999, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_dep_2", - "trafficAllocation":100, - "trafficAllocationSeed":-806171485, - "seed":922684950, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1499707910800, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Identify_UI", - "treatments":[ - "on" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_dep_2", + "trafficAllocation": 100, + "trafficAllocationSeed": -806171485, + "seed": 922684950, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1499707910800, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Identify_UI", + "treatments": [ + "on" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in split Identify_UI treatment [on]" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"IN_SPLIT_TREATMENT", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":{ - "split":"Definition_As_Of_Clickable_UI", - "treatments":[ - "off" - ] - }, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] + ], + "label": "in split Identify_UI treatment [on]" }, - "partitions":[ - { - "treatment":"on", - "size":50 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "IN_SPLIT_TREATMENT", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": { + "split": "Definition_As_Of_Clickable_UI", + "treatments": [ + "off" + ] + }, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":50 - } - ], - "label":"in split Definition_As_Of_Clickable_UI treatment [off]" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Definition_As_Of_Clickable_UI", - "trafficAllocation":100, - "trafficAllocationSeed":-198035199, - "seed":-151947071, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1498168847351, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "tito", - "trevor" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 50 + }, + { + "treatment": "off", + "size": 50 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in split Definition_As_Of_Clickable_UI treatment [off]" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Definition_As_Of_Clickable_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": -198035199, + "seed": -151947071, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1498168847351, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "tito", + "trevor" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"Identify_UI", - "trafficAllocation":100, - "trafficAllocationSeed":-139516103, - "seed":1543172523, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1498078888450, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "Identify_UI", + "trafficAllocation": 100, + "trafficAllocationSeed": -139516103, + "seed": 1543172523, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1498078888450, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":0 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"test_definition_as_of", - "trafficAllocation":100, - "trafficAllocationSeed":1025823325, - "seed":-554248124, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1497289730024, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"account", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negatee":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 100 + }, + { + "treatment": "off", + "size": 0 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "test_definition_as_of", + "trafficAllocation": 100, + "trafficAllocationSeed": 1025823325, + "seed": -554248124, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1497289730024, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "account", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negatee": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"Test-jw-go", - "trafficAllocation":100, - "trafficAllocationSeed":768122971, - "seed":1539205707, - "status":"ACTIVE", - "defaultTreatment":"off", - "changeNumber":1496339112852, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"WHITELIST", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":{ - "whitelist":[ - "test1" - ] - }, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted" - }, - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "Test-jw-go", + "trafficAllocation": 100, + "trafficAllocationSeed": 768122971, + "seed": 1539205707, + "status": "ACTIVE", + "defaultTreatment": "off", + "changeNumber": 1496339112852, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "WHITELIST", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": { + "whitelist": [ + "test1" + ] + }, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 } - ] + ], + "label": "whitelisted" }, - "partitions":[ - { - "treatment":"on", - "size":0 + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_7", - "trafficAllocation":100, - "trafficAllocationSeed":-1340337178, - "seed":-1091938685, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593464885, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_7", + "trafficAllocation": 100, + "trafficAllocationSeed": -1340337178, + "seed": -1091938685, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593464885, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_6", - "trafficAllocation":100, - "trafficAllocationSeed":-1202331834, - "seed":-48445256, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593448028, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_6", + "trafficAllocation": 100, + "trafficAllocationSeed": -1202331834, + "seed": -48445256, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593448028, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_5", - "trafficAllocation":100, - "trafficAllocationSeed":2119994290, - "seed":-227092192, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593428034, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_5", + "trafficAllocation": 100, + "trafficAllocationSeed": 2119994290, + "seed": -227092192, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593428034, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_4", - "trafficAllocation":100, - "trafficAllocationSeed":1066635158, - "seed":-850704283, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593412226, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_4", + "trafficAllocation": 100, + "trafficAllocationSeed": 1066635158, + "seed": -850704283, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593412226, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_3", - "trafficAllocation":100, - "trafficAllocationSeed":1252392550, - "seed":971538037, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593352077, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_3", + "trafficAllocation": 100, + "trafficAllocationSeed": 1252392550, + "seed": 971538037, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593352077, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"user", - "name":"benchmark_jw_2", - "trafficAllocation":100, - "trafficAllocationSeed":-285565213, - "seed":-1992295819, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593336752, - "algo":2, - "conditions":[ - { - "conditionType":"ROLLOUT", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":{ - "trafficType":"user", - "attribute":null - }, - "matcherType":"ALL_KEYS", - "negate":false, - "userDefinedSegmentMatcherData":null, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":0 + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "user", + "name": "benchmark_jw_2", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593336752, + "algo": 2, + "conditions": [ + { + "conditionType": "ROLLOUT", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": { + "trafficType": "user", + "attribute": null + }, + "matcherType": "ALL_KEYS", + "negate": false, + "userDefinedSegmentMatcherData": null, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] }, - { - "treatment":"off", - "size":100 - } - ], - "label":"in segment all" - } - ] - }, - { - "trafficTypeName":"account", - "name":"ls_split", - "trafficAllocation":100, - "trafficAllocationSeed":-285565213, - "seed":-1992295819, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1506703262916, - "algo":2, - "conditions":[ - { - "conditionType":"WHITELIST", - "matcherGroup":{ - "combiner":"AND", - "matchers":[ - { - "keySelector":null, - "matcherType":"IN_LARGE_SEGMENT", - "negate":false, - "userDefinedSegmentMatcherData":{ - "segmentName":"segment1" - }, - "userDefinedLargeSegmentMatcherData":{ - "largeSegmentName":"segment1" - }, - "whitelistMatcherData":null, - "unaryNumericMatcherData":null, - "betweenMatcherData":null, - "booleanMatcherData":null, - "dependencyMatcherData":null, - "stringMatcherData":null + "partitions": [ + { + "treatment": "on", + "size": 0 + }, + { + "treatment": "off", + "size": 100 } - ] - }, - "partitions":[ - { - "treatment":"on", - "size":100 - } - ], - "label":"whitelisted segment" - } - ] - }, - { - "trafficTypeName":"user", - "name":"broken_split", - "trafficAllocation":100, - "trafficAllocationSeed":-285565213, - "status":"ACTIVE", - "killed":false, - "defaultTreatment":"off", - "changeNumber":1494593336752 - } - ], - "since":-1, - "till":1506703262916 -} + ], + "label": "in segment all" + } + ] + }, + { + "trafficTypeName": "account", + "name": "ls_split", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "seed": -1992295819, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1506703262916, + "algo": 2, + "conditions": [ + { + "conditionType": "WHITELIST", + "matcherGroup": { + "combiner": "AND", + "matchers": [ + { + "keySelector": null, + "matcherType": "IN_LARGE_SEGMENT", + "negate": false, + "userDefinedSegmentMatcherData": { + "segmentName": "segment1" + }, + "userDefinedLargeSegmentMatcherData": { + "largeSegmentName": "segment1" + }, + "whitelistMatcherData": null, + "unaryNumericMatcherData": null, + "betweenMatcherData": null, + "booleanMatcherData": null, + "dependencyMatcherData": null, + "stringMatcherData": null + } + ] + }, + "partitions": [ + { + "treatment": "on", + "size": 100 + } + ], + "label": "whitelisted segment" + } + ] + }, + { + "trafficTypeName": "user", + "name": "broken_split", + "trafficAllocation": 100, + "trafficAllocationSeed": -285565213, + "status": "ACTIVE", + "killed": false, + "defaultTreatment": "off", + "changeNumber": 1494593336752 + } + ], + "since": -1, + "till": 1506703262916 + }, + "rbs": { + "d": [], + "s": -1, + "t": 1506703261916 + } +} \ No newline at end of file diff --git a/src/test/resources/split_changes_1_updated.json b/src/test/resources/split_changes_1_updated.json new file mode 100644 index 000000000..e937cc953 --- /dev/null +++ b/src/test/resources/split_changes_1_updated.json @@ -0,0 +1,201 @@ +{ + "ff": { + "splits":[ + { + "trafficTypeName":"account", + "name":"FACUNDO_TEST", + "trafficAllocation":59, + "trafficAllocationSeed":-2108186082, + "seed":-1947050785, + "status":"ACTIVE", + "killed":false, + "defaultTreatment":"off", + "changeNumber":1506703262916, + "algo":2, + "conditions":[ + { + "conditionType":"WHITELIST", + "matcherGroup":{ + "combiner":"AND", + "matchers":[ + { + "keySelector":null, + "matcherType":"WHITELIST", + "negate":false, + "userDefinedSegmentMatcherData":null, + "whitelistMatcherData":{ + "whitelist":[ + "nico_test", + "othertest" + ] + }, + "unaryNumericMatcherData":null, + "betweenMatcherData":null, + "booleanMatcherData":null, + "dependencyMatcherData":null, + "stringMatcherData":null + } + ] + }, + "partitions":[ + { + "treatment":"on", + "size":100 + } + ], + "label":"whitelisted" + }, + { + "conditionType":"WHITELIST", + "matcherGroup":{ + "combiner":"AND", + "matchers":[ + { + "keySelector":null, + "matcherType":"WHITELIST", + "negate":false, + "userDefinedSegmentMatcherData":null, + "whitelistMatcherData":{ + "whitelist":[ + "bla" + ] + }, + "unaryNumericMatcherData":null, + "betweenMatcherData":null, + "booleanMatcherData":null, + "dependencyMatcherData":null, + "stringMatcherData":null + } + ] + }, + "partitions":[ + { + "treatment":"off", + "size":100 + } + ], + "label":"whitelisted" + }, + { + "conditionType":"ROLLOUT", + "matcherGroup":{ + "combiner":"AND", + "matchers":[ + { + "keySelector":{ + "trafficType":"account", + "attribute":null + }, + "matcherType":"ALL_KEYS", + "negate":false, + "userDefinedSegmentMatcherData":null, + "whitelistMatcherData":null, + "unaryNumericMatcherData":null, + "betweenMatcherData":null, + "booleanMatcherData":null, + "dependencyMatcherData":null, + "stringMatcherData":null + } + ] + }, + "partitions":[ + { + "treatment":"on", + "size":0 + }, + { + "treatment":"off", + "size":100 + }, + { + "treatment":"visa", + "size":0 + } + ], + "label":"in segment all" + } + ] + }, + { + "trafficTypeName":"account", + "name":"testing", + "trafficAllocation":100, + "trafficAllocationSeed":527505678, + "seed":-1716462249, + "status":"ACTIVE", + "killed":false, + "defaultTreatment":"off", + "changeNumber":1506440189077, + "algo":2, + "conditions":[ + { + "conditionType":"ROLLOUT", + "matcherGroup":{ + "combiner":"AND", + "matchers":[ + { + "keySelector":{ + "trafficType":"account", + "attribute":null + }, + "matcherType":"IN_SPLIT_TREATMENT", + "negate":false, + "userDefinedSegmentMatcherData":null, + "whitelistMatcherData":null, + "unaryNumericMatcherData":null, + "betweenMatcherData":null, + "booleanMatcherData":null, + "dependencyMatcherData":{ + "split":"test_definition_as_of", + "treatments":[ + "on" + ] + }, + "stringMatcherData":null + }, + { + "keySelector":{ + "trafficType":"account", + "attribute":null + }, + "matcherType":"IN_SPLIT_TREATMENT", + "negate":true, + "userDefinedSegmentMatcherData":null, + "whitelistMatcherData":null, + "unaryNumericMatcherData":null, + "betweenMatcherData":null, + "booleanMatcherData":null, + "dependencyMatcherData":{ + "split":"Identify_UI", + "treatments":[ + "on" + ] + }, + "stringMatcherData":null + } + ] + }, + "partitions":[ + { + "treatment":"on", + "size":100 + }, + { + "treatment":"off", + "size":0 + } + ], + "label":"in split test_definition_as_of treatment [on] and not in split Identify_UI treatment [on]" + } + ] + } + ], + "since":-1, + "till":1506703262916 + }, + "rbs": { + "d": [], + "s": -1, + "t": 1506703262916 + } +}