def test_segment_update(self): """Test updating a segment.""" storage = InMemorySegmentStorage() segment = Segment('some_segment', ['key1', 'key2', 'key3'], 123) storage.put(segment) assert storage.get('some_segment') == segment storage.update('some_segment', ['key4', 'key5'], ['key2', 'key3'], 456) assert storage.segment_contains('some_segment', 'key1') assert storage.segment_contains('some_segment', 'key4') assert storage.segment_contains('some_segment', 'key5') assert not storage.segment_contains('some_segment', 'key2') assert not storage.segment_contains('some_segment', 'key3') assert storage.get_change_number('some_segment') == 456
def update(self, segment_name, to_add, to_remove, change_number=None): """ Update a split. Create it if it doesn't exist. :param segment_name: Name of the segment to update. :type segment_name: str :param to_add: Set of members to add to the segment. :type to_add: set :param to_remove: List of members to remove from the segment. :type to_remove: Set """ with self._lock: if segment_name not in self._segments: self._segments[segment_name] = Segment(segment_name, to_add, change_number) return self._segments[segment_name].update(to_add, to_remove) if change_number is not None: self._segments[segment_name].change_number = change_number
def test_segment_contains(self, mocker): """Test that segment contains works properly.""" uwsgi = get_uwsgi(True) storage = UWSGISegmentStorage(uwsgi) from_raw_mock = mocker.Mock() from_raw_mock.return_value = Segment('some_segment', ['abc'], 123) mocker.patch('splitio.models.segments.from_raw', new=from_raw_mock) segment = mocker.Mock(spec=Segment) segment_keys = mocker.PropertyMock() segment_keys.return_value = ['abc'] type(segment).keys = segment_keys segment.to_json = {} segment_name = mocker.PropertyMock() segment_name.return_value = 'some_segment' segment_change_number = mocker.PropertyMock() segment_change_number.return_value = 123 type(segment).name = segment_name type(segment).change_number = segment_change_number storage.put(segment) assert storage.segment_contains('some_segment', 'abc') assert not storage.segment_contains('some_segment', 'qwe')