f4d9a3695d
--------- Co-authored-by: Gareth Lloyd <gareth.lloyd@memgraph.io>
81 lines
2.6 KiB
Python
Executable File
81 lines
2.6 KiB
Python
Executable File
# Copyright 2022 Memgraph Ltd.
|
|
#
|
|
# Use of this software is governed by the Business Source License
|
|
# included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
|
# License, and you may not use this file except in compliance with the Business Source License.
|
|
#
|
|
# As of the Change Date specified in that file, in accordance with
|
|
# the Business Source License, use of this software will be governed
|
|
# by the Apache License, Version 2.0, included in the file
|
|
# licenses/APL.txt.
|
|
|
|
import sys
|
|
import time
|
|
|
|
import pytest
|
|
from common import execute_and_fetch_all
|
|
from mg_utils import mg_sleep_and_assert_collection
|
|
|
|
|
|
# BUGFIX: for issue https://github.com/memgraph/memgraph/issues/1515
|
|
def test_replication_handles_delete_when_multiple_edges_of_same_type(connection):
|
|
# Goal is to check the timestamp are correctly computed from the information we get from replicas.
|
|
# 0/ Check original state of replicas.
|
|
# 1/ Add nodes and edges to MAIN, then delete the edges.
|
|
# 2/ Check state of replicas.
|
|
|
|
# 0/
|
|
conn = connection(7687, "main")
|
|
conn.autocommit = True
|
|
cursor = conn.cursor()
|
|
actual_data = execute_and_fetch_all(cursor, "SHOW REPLICAS;")
|
|
|
|
expected_data = [
|
|
(
|
|
"replica_1",
|
|
"127.0.0.1:10001",
|
|
"sync",
|
|
{"ts": 0, "behind": None, "status": "ready"},
|
|
{"memgraph": {"ts": 0, "behind": 0, "status": "ready"}},
|
|
),
|
|
(
|
|
"replica_2",
|
|
"127.0.0.1:10002",
|
|
"async",
|
|
{"ts": 0, "behind": None, "status": "ready"},
|
|
{"memgraph": {"ts": 0, "behind": 0, "status": "ready"}},
|
|
),
|
|
]
|
|
assert all([x in actual_data for x in expected_data])
|
|
|
|
# 1/
|
|
execute_and_fetch_all(cursor, "CREATE (a)-[r:X]->(b) CREATE (a)-[:X]->(b) DELETE r;")
|
|
|
|
# 2/
|
|
expected_data = [
|
|
(
|
|
"replica_1",
|
|
"127.0.0.1:10001",
|
|
"sync",
|
|
{"ts": 0, "behind": None, "status": "ready"},
|
|
{"memgraph": {"ts": 2, "behind": 0, "status": "ready"}},
|
|
),
|
|
(
|
|
"replica_2",
|
|
"127.0.0.1:10002",
|
|
"async",
|
|
{"ts": 0, "behind": None, "status": "ready"},
|
|
{"memgraph": {"ts": 2, "behind": 0, "status": "ready"}},
|
|
),
|
|
]
|
|
|
|
def retrieve_data():
|
|
return execute_and_fetch_all(cursor, "SHOW REPLICAS;")
|
|
|
|
actual_data = mg_sleep_and_assert_collection(expected_data, retrieve_data)
|
|
assert all([x in actual_data for x in expected_data])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(pytest.main([__file__, "-rA"]))
|