summaryrefslogtreecommitdiff
path: root/src-py
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-11-09 12:12:57 +0200
committerLV-426 <lv-426@taproot.org.il>2014-11-09 12:12:57 +0200
commit48e483a6f7bb11c22b810341088f441706474a06 (patch)
treed6db2db69d7aa8be332bf3f4a9fdb87aec753c13 /src-py
parente5bb0ee5976f2f1348387ed6ed57cc43e34caa7c (diff)
misc
Diffstat (limited to 'src-py')
-rw-r--r--src-py/db_controller.py4
-rw-r--r--src-py/neo4j_util.py19
-rw-r--r--src-py/test_db_controller.py29
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))