d4f0bb0e38
Add a report for the case where a sync replica does not confirm within a timeout: -Add a new exception: ReplicationException to be returned when one sync replica does not confirm the reception of messages (new data, new constraint/index, or for triggers) -Update the logic to throw the ReplicationException when needed for insertion of new data, triggers, or creation of new constraint/index -Add end-to-end tests to cover the loss of connection with sync/async replicas when adding new data, adding new constraint/indexes, and triggers Add end-to-end tests to cover the creation and drop of indexes, existence constraints, and uniqueness constraints Improved tooling function mg_sleep_and_assert to also show the last result when duration is exceeded
19 lines
622 B
Python
19 lines
622 B
Python
import time
|
|
|
|
|
|
def mg_sleep_and_assert(expected_value, function_to_retrieve_data, max_duration=20, time_between_attempt=0.05):
|
|
result = function_to_retrieve_data()
|
|
start_time = time.time()
|
|
while result != expected_value:
|
|
current_time = time.time()
|
|
duration = current_time - start_time
|
|
if duration > max_duration:
|
|
assert (
|
|
False
|
|
), f" mg_sleep_and_assert has tried for too long and did not get the expected result! Last result was: {result}"
|
|
|
|
time.sleep(time_between_attempt)
|
|
result = function_to_retrieve_data()
|
|
|
|
return result
|