Skip to content

Commit f779b23

Browse files
authored
Merge pull request #383 from splitio/iff-archived-splits
added handling archived split
2 parents 72300f7 + 31b9ce9 commit f779b23

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

splitio/push/splitworker.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import json
88
from enum import Enum
99

10-
from splitio.models.splits import from_raw
10+
from splitio.models.splits import from_raw, Status
1111
from splitio.push.parser import UpdateType
1212

1313
_LOGGER = logging.getLogger(__name__)
@@ -72,7 +72,11 @@ def _run(self):
7272
try:
7373
if self._check_instant_ff_update(event):
7474
try:
75-
self._feature_flag_storage.put(from_raw(json.loads(self._get_feature_flag_definition(event))))
75+
new_split = from_raw(json.loads(self._get_feature_flag_definition(event)))
76+
if new_split.status == Status.ACTIVE:
77+
self._feature_flag_storage.put(new_split)
78+
else:
79+
self._feature_flag_storage.remove(new_split.name)
7680
self._feature_flag_storage.set_change_number(event.change_number)
7781
continue
7882
except Exception as e:

tests/push/test_split_worker.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,12 @@ def get_change_number():
9999
def put(feature_flag):
100100
self._feature_flag = feature_flag
101101

102+
def remove(feature_flag):
103+
self._feature_flag_delete = feature_flag
104+
102105
split_worker._feature_flag_storage.get_change_number = get_change_number
103106
split_worker._feature_flag_storage.put = put
107+
split_worker._feature_flag_storage.remove = remove
104108

105109
# compression 0
106110
self._feature_flag = None
@@ -120,6 +124,14 @@ def put(feature_flag):
120124
time.sleep(0.1)
121125
assert self._feature_flag.name == 'bilal_split'
122126

127+
# should call delete split
128+
self._feature_flag = None
129+
self._feature_flag_delete = None
130+
q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eyJ0cmFmZmljVHlwZU5hbWUiOiAidXNlciIsICJpZCI6ICIzM2VhZmE1MC0xYTY1LTExZWQtOTBkZi1mYTMwZDk2OTA0NDUiLCAibmFtZSI6ICJiaWxhbF9zcGxpdCIsICJ0cmFmZmljQWxsb2NhdGlvbiI6IDEwMCwgInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6IC0xMzY0MTE5MjgyLCAic2VlZCI6IC02MDU5Mzg4NDMsICJzdGF0dXMiOiAiQVJDSElWRUQiLCAia2lsbGVkIjogZmFsc2UsICJkZWZhdWx0VHJlYXRtZW50IjogIm9mZiIsICJjaGFuZ2VOdW1iZXIiOiAxNjg0Mjc1ODM5OTUyLCAiYWxnbyI6IDIsICJjb25maWd1cmF0aW9ucyI6IHt9LCAiY29uZGl0aW9ucyI6IFt7ImNvbmRpdGlvblR5cGUiOiAiUk9MTE9VVCIsICJtYXRjaGVyR3JvdXAiOiB7ImNvbWJpbmVyIjogIkFORCIsICJtYXRjaGVycyI6IFt7ImtleVNlbGVjdG9yIjogeyJ0cmFmZmljVHlwZSI6ICJ1c2VyIn0sICJtYXRjaGVyVHlwZSI6ICJJTl9TRUdNRU5UIiwgIm5lZ2F0ZSI6IGZhbHNlLCAidXNlckRlZmluZWRTZWdtZW50TWF0Y2hlckRhdGEiOiB7InNlZ21lbnROYW1lIjogImJpbGFsX3NlZ21lbnQifX1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDB9LCB7InRyZWF0bWVudCI6ICJvZmYiLCAic2l6ZSI6IDEwMH1dLCAibGFiZWwiOiAiaW4gc2VnbWVudCBiaWxhbF9zZWdtZW50In0sIHsiY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIifSwgIm1hdGNoZXJUeXBlIjogIkFMTF9LRVlTIiwgIm5lZ2F0ZSI6IGZhbHNlfV19LCAicGFydGl0aW9ucyI6IFt7InRyZWF0bWVudCI6ICJvbiIsICJzaXplIjogMH0sIHsidHJlYXRtZW50IjogIm9mZiIsICJzaXplIjogMTAwfV0sICJsYWJlbCI6ICJkZWZhdWx0IHJ1bGUifV19', 0))
131+
time.sleep(0.1)
132+
assert self._feature_flag_delete == 'bilal_split'
133+
assert self._feature_flag == None
134+
123135
def test_edge_cases(self, mocker):
124136
q = queue.Queue()
125137
split_worker = SplitWorker(handler_sync, q, mocker.Mock())

0 commit comments

Comments
 (0)