@@ -77,11 +77,14 @@ def check_config(self, adoc_config: Dict[str, str]):
77
77
return False
78
78
return True
79
79
80
- def run_failing_queries (self , parsed_test : ParsedTest , type : TransactionType ) -> str :
81
- query = "\n " .join (parsed_test .segments )
80
+ def run_failing_queries (self , queries : List [str ], type : TransactionType ) -> str :
82
81
with self .driver .transaction (self .db , type ) as tx :
83
82
try :
84
- tx .query (query ).resolve ()
83
+ promises = []
84
+ for q in queries :
85
+ promises += [tx .query (q )]
86
+ for p in promises :
87
+ p .resolve ()
85
88
except :
86
89
return FailureMode .Runtime
87
90
try :
@@ -90,22 +93,27 @@ def run_failing_queries(self, parsed_test: ParsedTest, type: TransactionType) ->
90
93
return FailureMode .Commit
91
94
return FailureMode .NoFailure
92
95
93
- def run_transaction (self , parsed_test : ParsedTest , type : TransactionType , counted = False , rollback = False , documents = False ) -> Union [int , None ]:
96
+ def run_transaction (self , queries : List [ str ] , type : TransactionType , counted = False , rollback = False , documents = False ) -> Union [int , None ]:
94
97
count_var_name = "automatic_test_count"
95
- query = "\n " .join (parsed_test .segments )
96
98
if counted :
97
- query += f"\n reduce ${ count_var_name } = count;"
99
+ queries [ - 1 ] = queries [ - 1 ] + f"\n reduce ${ count_var_name } = count;"
98
100
with self .driver .transaction (self .db , type ) as tx :
99
101
try :
100
- result = tx .query (query ).resolve ()
102
+ promises = []
103
+ results = []
104
+ for q in queries :
105
+ promises .append (tx .query (q ))
106
+ for p in promises :
107
+ results .append (p .resolve ())
101
108
if rollback :
102
109
tx .rollback ()
103
110
tx .close ()
104
111
elif type == TransactionType .READ :
105
- if documents :
106
- consumed_iterator = list (result .as_concept_documents ())
107
- else :
108
- consumed_iterator = list (result .as_concept_rows ())
112
+ for r in results :
113
+ if documents :
114
+ consumed_iterator = list (r .as_concept_documents ())
115
+ else :
116
+ consumed_iterator = list (r .as_concept_rows ())
109
117
tx .close ()
110
118
else :
111
119
tx .commit ()
@@ -115,8 +123,8 @@ def run_transaction(self, parsed_test: ParsedTest, type: TransactionType, counte
115
123
if type == TransactionType .READ :
116
124
count = consumed_iterator [0 ].get (count_var_name ).get_integer ()
117
125
else :
118
- rows = list (result .as_concept_rows ())
119
- count = rows [0 ].get (count_var_name ).get_integer ()
126
+ last_result = list (results [ - 1 ] .as_concept_rows ())
127
+ count = last_result [0 ].get (count_var_name ).get_integer ()
120
128
return count
121
129
except Exception as e :
122
130
raise Exception (f"{ e } " ) from e
@@ -165,15 +173,15 @@ def run_test(self, parsed_test: ParsedTest, adoc_path: str):
165
173
ref_failure_mode = FailureMode .Runtime
166
174
case x if x == TEST_FAIL_COMMIT_VAL :
167
175
ref_failure_mode = FailureMode .Commit
168
- failure_mode = self .run_failing_queries (parsed_test , type )
176
+ failure_mode = self .run_failing_queries (parsed_test . segments , type )
169
177
if failure_mode != ref_failure_mode :
170
178
raise RuntimeError (f"[{ adoc_path } ]: Failure mode: expected { ref_failure_mode } but got { failure_mode } " )
171
179
elif counted == True :
172
- count = self .run_transaction (parsed_test , type , counted , rollback , documents )
180
+ count = self .run_transaction (parsed_test . segments , type , counted , rollback , documents )
173
181
if count != reference_count :
174
182
raise RuntimeError (f"[{ adoc_path } ]: Query count: expected { reference_count } but got { count } " )
175
183
else :
176
- self .run_transaction (parsed_test , type , counted , rollback , documents )
184
+ self .run_transaction (parsed_test . segments , type , counted , rollback , documents )
177
185
178
186
self .after_run_test (parsed_test )
179
187
0 commit comments