summaryrefslogtreecommitdiff
path: root/src-py
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-10-27 12:33:02 +0200
committerLV-426 <lv-426@taproot.org.il>2014-10-27 12:33:02 +0200
commit6629438b2f1a9d54d152281342d4d7e0641b7254 (patch)
treed795318cba1dd3a35fc0ff0b307c56703ca4a9f3 /src-py
parent9b89717dfc286af0127108b221630f9c1d054971 (diff)
support node removals in DBO_topo_diff_commit
Diffstat (limited to 'src-py')
-rw-r--r--src-py/db_controller.py18
-rw-r--r--src-py/test_db_controller.py27
2 files changed, 33 insertions, 12 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py
index c73a6882..aa1e8450 100644
--- a/src-py/db_controller.py
+++ b/src-py/db_controller.py
@@ -124,22 +124,30 @@ class DBO_topo_diff_commit(DB_composed_op):
# TODO rm link set
# TODO rm node set
- assert 0 == len(topo_diff.node_set_rm), 'unsupported'
assert 0 == len(topo_diff.link_set_rm), 'unsupported'
n_add_map = db_util.meta_attr_list_to_meta_attr_map(topo_diff.node_set_add)
l_add_map = db_util.meta_attr_list_to_meta_attr_map(topo_diff.link_set_add)
+ l_rm_set = []
+ n_rm_set = topo_diff.node_set_rm
#
# [!] order critical
#
if len(n_add_map) > 0:
- op_n_add = DBO_add_node_set(n_add_map)
- self.add_sub_op(op_n_add)
+ op = DBO_add_node_set(n_add_map)
+ self.add_sub_op(op)
if len(l_add_map) > 0:
- op_l_add = DBO_add_link_set(l_add_map)
- self.add_sub_op(op_l_add)
+ op = DBO_add_link_set(l_add_map)
+ self.add_sub_op(op)
+
+ if len(l_rm_set) > 0:
+ pass
+
+ if len(n_rm_set) > 0:
+ op = DBO_rm_node_set(n_rm_set)
+ self.add_sub_op(op)
class DBO_attr_diff_commit(DB_op):
"""
diff --git a/src-py/test_db_controller.py b/src-py/test_db_controller.py
index 4b17ad3c..002777d7 100644
--- a/src-py/test_db_controller.py
+++ b/src-py/test_db_controller.py
@@ -200,12 +200,13 @@ class TestDBController(unittest.TestCase):
n_0_id = rand_id()
n_1_id = rand_id()
n_2_id = rand_id()
+ n_T = 'T_test_topo_diff_commit'
- n_set = [{'__type': 'T_test_topo_diff_commit', 'id': n_0_id },
- {'__type': 'T_test_topo_diff_commit', 'id': n_1_id },
- {'__type': 'T_test_topo_diff_commit', 'id': n_2_id }]
- l_set = [{'__type': 'T_test_topo_diff_commit', '__src': n_0_id, '__dst': n_1_id},
- {'__type': 'T_test_topo_diff_commit', '__src': n_1_id, '__dst': n_0_id}]
+ n_set = [{'__type': n_T, 'id': n_0_id },
+ {'__type': n_T, 'id': n_1_id },
+ {'__type': n_T, 'id': n_2_id }]
+ l_set = [{'__type': n_T, '__src': n_0_id, '__dst': n_1_id},
+ {'__type': n_T, '__src': n_1_id, '__dst': n_0_id}]
topo_diff = Topo_Diff(node_set_add=n_set,
link_set_add=l_set)
@@ -218,11 +219,23 @@ class TestDBController(unittest.TestCase):
id_set = self.db_ctl.exec_op(dbc.DBO_match_node_set_by_id_attribute([n_0_id, n_1_id]))
self.assertEqual(len(id_set), 2)
- id_set = self.db_ctl.exec_op(dbc.DBO_load_link_set_by_src_or_dst_id_attributes(src_id=n_0_id, dst_id=n_1_id))
+
+ l_ptr = Link.link_ptr(src_id=n_0_id, dst_id=n_1_id)
+ id_set = self.db_ctl.exec_op(dbc.DBO_load_link_set.init_from_link_ptr(l_ptr))
self.assertEqual(len(id_set), 1)
- id_set = self.db_ctl.exec_op(dbc.DBO_load_link_set_by_src_or_dst_id_attributes(src_id=n_1_id, dst_id=n_0_id))
+
+ l_ptr = Link.link_ptr(src_id=n_1_id, dst_id=n_0_id)
+ id_set = self.db_ctl.exec_op(dbc.DBO_load_link_set.init_from_link_ptr(l_ptr))
self.assertEqual(len(id_set), 1)
+ id_set_rm=[n_2_id]
+ topo_diff = Topo_Diff(node_set_rm=id_set_rm)
+ op = dbc.DBO_topo_diff_commit(topo_diff)
+ self.db_ctl.exec_op(op)
+ op = dbc.DBO_match_node_set_by_id_attribute(id_set_rm)
+ id_set = self.db_ctl.exec_op(op)
+ self.assertEqual(len(id_set), 0)
+
def test_attr_diff_commit(self):
# create test node
n_id = rand_id()