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