From f918f288055fca74035cb5d17792a8534dec4e8b Mon Sep 17 00:00:00 2001 From: Egor Ivkov <e.o.ivkov@gmail.com> Date: Thu, 8 Jun 2023 14:31:40 +0300 Subject: [PATCH] test: allow multiple ranges in cas python API --- test/conftest.py | 42 ++++++++++++++++++++++++------------------ test/int/test_cas.py | 6 +++--- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index bd77f02e06..179a642db4 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -629,7 +629,7 @@ class Instance: tuple: Tuple | List, index: int | None = None, term: int | None = None, - range: CasRange | None = None, + ranges: List[CasRange] | None = None, ) -> int: """ Performs a clusterwide compare and swap operation. @@ -649,18 +649,21 @@ class Instance: space_id = self.space_id(space) - predicate_range = None - if range is not None: - predicate_range = dict( - space=space_id, - key_min=range.key_min_packed, - key_max=range.key_max_packed, - ) + predicate_ranges = [] + if ranges is not None: + for range in ranges: + predicate_ranges.append( + dict( + space=space_id, + key_min=range.key_min_packed, + key_max=range.key_max_packed, + ) + ) predicate = dict( index=index, term=term, - ranges=[predicate_range] if predicate_range is not None else [], + ranges=predicate_ranges, ) if dml_kind in ["insert", "replace"]: @@ -1078,7 +1081,7 @@ class Cluster: tuple: Tuple | List, index: int | None = None, term: int | None = None, - range: CasRange | None = None, + ranges: List[CasRange] | None = None, # If specified send CaS through this instance instance: Instance | None = None, ) -> int: @@ -1093,18 +1096,21 @@ class Cluster: if instance is None: instance = self.instances[0] - predicate_range = None - if range is not None: - predicate_range = dict( - space=space, - key_min=range.key_min, - key_max=range.key_max, - ) + predicate_ranges = [] + if ranges is not None: + for range in ranges: + predicate_ranges.append( + dict( + space=space, + key_min=range.key_min, + key_max=range.key_max, + ) + ) predicate = dict( index=index, term=term, - ranges=predicate_range, + ranges=predicate_ranges, ) if dml_kind in ["insert", "replace", "delete"]: dml = dict( diff --git a/test/int/test_cas.py b/test/int/test_cas.py index b98b93965b..732f5cf088 100644 --- a/test/int/test_cas.py +++ b/test/int/test_cas.py @@ -88,7 +88,7 @@ def test_cas_errors(instance: Instance): "insert", space, [0], - range=CasRange(eq=0), + ranges=[CasRange(eq=0)], ) assert e5.value.args == ( "ER_PROC_C", @@ -124,7 +124,7 @@ def test_cas_predicate(instance: Instance): "_pico_property", ["fruit", "orange"], index=read_index, - range=CasRange(eq="fruit"), + ranges=[CasRange(eq="fruit")], ) assert e5.value.args == ( "ER_PROC_C", @@ -139,7 +139,7 @@ def test_cas_predicate(instance: Instance): "_pico_property", ["flower", "tulip"], index=read_index, - range=CasRange(eq="flower"), + ranges=[CasRange(eq="flower")], ) assert ret == read_index + 2 instance.raft_wait_index(ret, _3_SEC) -- GitLab