diff options
| author | LV-426 <lv-426@taproot.org.il> | 2014-11-09 12:12:57 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2014-11-09 12:12:57 +0200 |
| commit | 48e483a6f7bb11c22b810341088f441706474a06 (patch) | |
| tree | d6db2db69d7aa8be332bf3f4a9fdb87aec753c13 /src-py | |
| parent | e5bb0ee5976f2f1348387ed6ed57cc43e34caa7c (diff) | |
misc
Diffstat (limited to 'src-py')
| -rw-r--r-- | src-py/db_controller.py | 4 | ||||
| -rw-r--r-- | src-py/neo4j_util.py | 19 | ||||
| -rw-r--r-- | src-py/test_db_controller.py | 29 |
3 files changed, 36 insertions, 16 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py index 273686fd..d9d8d737 100644 --- a/src-py/db_controller.py +++ b/src-py/db_controller.py @@ -63,6 +63,10 @@ class DB_op(object): def parse_multi_statement_response_data(self, data): pass + @property + def name(self): + return self.__class__.__name__ + def process_result_set(self): """ DB op can issue complex sets of quries all at once - this helper method diff --git a/src-py/neo4j_util.py b/src-py/neo4j_util.py index 642e094a..2b6257b4 100644 --- a/src-py/neo4j_util.py +++ b/src-py/neo4j_util.py @@ -6,14 +6,17 @@ import json import urllib2 import model import string +import time + +from util import debug_log_duration class Neo4JException(Exception): def __init__(self, error_set): self.error_set = error_set - + def __str__(self): return 'neo4j error set: ' + str(self.error_set) - + class DB_row(object): def __init__(self, data): self.data = data @@ -22,6 +25,9 @@ class DB_row(object): for column_val in self.data: yield column_val + def items(self): + return [x for x in self] + class DB_result_set(object): def __init__(self, data): self.data = data @@ -33,6 +39,9 @@ class DB_result_set(object): yield DB_row(db_row_dict['row']) + def items(self): + return [x for x in self] + class Cypher_String_Formatter(string.Formatter): """ Despite parameter support in Cypher, we sometimes do engage in query string building @@ -206,12 +215,12 @@ def meta_attr_list_to_meta_attr_map(e_set, meta_attr='__type'): """ ret = {} for v in e_set: - assert None != v['__type'] # attert type meta-attr is present + assert None != v['__type'] # assert type meta-attr is present v_type = v['__type'] - if None == ret.get(v_type):# init type list if necessary + if None == ret.get(v_type): # init type list if necessary ret[v_type] = [] - + v_no_meta = v.copy() del v_no_meta['__type'] diff --git a/src-py/test_db_controller.py b/src-py/test_db_controller.py index 4ff0c4de..da8ae364 100644 --- a/src-py/test_db_controller.py +++ b/src-py/test_db_controller.py @@ -5,6 +5,7 @@ import db_controller as dbc from rhizi_server import Config from neo4j_test_util import rand_id from neo4j_test_util import flush_db +from neo4j_test_util import gen_rand_data from neo4j_util import Neo4JException from model.graph import Attr_Diff @@ -35,8 +36,12 @@ class TestDBController(unittest.TestCase): self.log = logging.getLogger('rhizi') self.log.addHandler(logging.StreamHandler()) + # TODO rm when implemented: neo4j_test_util + self.db_ctl.exec_cypher_query('create index on :Person(id)') + self.db_ctl.exec_cypher_query('create index on :Skill(id)') + def setUp(self): - flush_db(self.db_ctl) # remove once embedded DB test mode is supported + flush_db(self.db_ctl) # remove once embedded DB test mode is supported self.db_ctl.exec_op(dbc.DBO_add_node_set(self.n_map)) self.db_ctl.exec_op(dbc.DBO_add_link_set(self.l_map)) @@ -127,6 +132,8 @@ class TestDBController(unittest.TestCase): self.assertEqual(len(id_set), 0) def test_load_link_set(self): + + # load by l_ptr l_ptr = Link.link_ptr(src_id='person_00', dst_id='skill_00') op = dbc.DBO_load_link_set.init_from_link_ptr(l_ptr) l_set = self.db_ctl.exec_op(op) @@ -164,7 +171,7 @@ class TestDBController(unittest.TestCase): op = dbc.DBO_add_node_set({'T_test_load_node_set_by_DB_id': [{'name': 'John Doe'}, {'name': 'John Doe'}]}) id_set = self.db_ctl.exec_op(op) - + # match against DB ids op = dbc.DBO_load_node_set_by_DB_id(id_set) n_set = self.db_ctl.exec_op(op) @@ -219,16 +226,16 @@ 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) - + 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) - + 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] + 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) @@ -278,7 +285,7 @@ class TestDBController(unittest.TestCase): n_2_id = rand_id() n_3_id = rand_id() n_T = 'T_test_rm_node_set' - + n_set = [{'__type': n_T, 'id': n_0_id }, {'__type': n_T, 'id': n_1_id }, {'__type': n_T, 'id': n_2_id }, @@ -291,13 +298,13 @@ class TestDBController(unittest.TestCase): op = dbc.DBO_topo_diff_commit(topo_diff) self.db_ctl.exec_op(op) - + op = dbc.DBO_rm_node_set([n_0_id, n_1_id]) self.db_ctl.exec_op(op) - + op = dbc.DBO_rm_node_set([n_2_id, n_3_id], rm_links=True) self.db_ctl.exec_op(op) - + # assert all deleted op = dbc.DBO_match_node_id_set(filter_type=n_T) id_set = self.db_ctl.exec_op(op) @@ -305,11 +312,11 @@ class TestDBController(unittest.TestCase): def test_rz_clone(self): l_n, l_r = gen_rand_data(self.db_ctl, lim_n=8, lim_r=16, prob_link_create=0.7) - op = dbc.DBO_rz_clone(filter_label = l_n, limit=32) + op = dbc.DBO_rz_clone(filter_label=l_n, limit=32) ret = self.db_ctl.exec_op(op) n_set = ret['node_set'] l_set = ret['link_set'] - + # TODO improve assertions self.assertTrue(0 < len(n_set)) self.assertTrue(0 < len(l_set)) |
