Skip to content

Commit

Permalink
Implement transaction isolation syncer
Browse files Browse the repository at this point in the history
  • Loading branch information
andbag committed Apr 17, 2019
1 parent 26931cc commit 1be89a4
Show file tree
Hide file tree
Showing 13 changed files with 382 additions and 132 deletions.
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/BooleanIndex/tests.py
Expand Up @@ -257,19 +257,19 @@ def test_reindexation_when_index_reversed(self):
def test_getCounter(self):
index = self._makeOne()

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

obj = Dummy(1, True)
index.index_object(obj.id, obj)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(obj.id)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear is a change
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/DateIndex/tests.py
Expand Up @@ -337,21 +337,21 @@ def test_getCounter(self):
from DateTime import DateTime

index = self._makeOne()
self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

index.index_object(1, Dummy('b', DateTime(0)))
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(1)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear is a change
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)

def test_precision(self):
from DateTime import DateTime
Expand Down
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/DateRangeIndex/tests.py
Expand Up @@ -299,22 +299,22 @@ def test_resultset(self):

def test_getCounter(self):
index = self._makeOne('work', 'start', 'stop')
self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

k, obj = dummies[0]
index.index_object(k, obj)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(k)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear is a change
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)

def test_precision(self):
precision = 5
Expand Down
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/KeywordIndex/tests.py
Expand Up @@ -275,19 +275,19 @@ def test_value_removes(self):
def test_getCounter(self):
index = self._makeOne('foo')

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

obj = Dummy(['hello'])
index.index_object(10, obj)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(10)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear is a change
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)
6 changes: 1 addition & 5 deletions src/Products/PluginIndexes/PathIndex/PathIndex.py
Expand Up @@ -200,11 +200,7 @@ def _increment_counter(self):

def getCounter(self):
"""Return a counter which is increased on index changes"""
counter = self._counter is not None and self._counter() or 0
changed = (self._counter is not None and
self._counter._p_changed or False)

return (counter, changed)
return self._counter is not None and self._counter() or 0

def numObjects(self):
""" See IPluggableIndex.
Expand Down
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/PathIndex/tests.py
Expand Up @@ -537,19 +537,19 @@ def test__search_w_level_0(self):
def test_getCounter(self):
index = self._makeOne()

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

doc = Dummy('/aa/bb')
index.index_object(1, doc)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(1)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear changes the index
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)
6 changes: 1 addition & 5 deletions src/Products/PluginIndexes/TopicIndex/TopicIndex.py
Expand Up @@ -103,11 +103,7 @@ def _increment_counter(self):

def getCounter(self):
"""Return a counter which is increased on index changes"""
counter = self._counter is not None and self._counter() or 0
changed = (self._counter is not None and
self._counter._p_changed or False)

return (counter, changed)
return self._counter is not None and self._counter() or 0

def numObjects(self):
"""Return the number of indexed objects."""
Expand Down
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/TopicIndex/tests.py
Expand Up @@ -97,18 +97,18 @@ def test_getCounter(self):
index = self.TI
index._counter.set(0)

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

index.index_object(1, Obj(1, 'doc1'))
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(1)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear changes the index
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)
10 changes: 5 additions & 5 deletions src/Products/PluginIndexes/UUIDIndex/tests.py
Expand Up @@ -179,19 +179,19 @@ def test_non_unique(self):
def test_getCounter(self):
index = self._makeOne('foo')

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

obj = Dummy('a')
index.index_object(10, obj)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(10)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear is a change
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)
12 changes: 5 additions & 7 deletions src/Products/PluginIndexes/tests/test_unindex.py
Expand Up @@ -27,7 +27,6 @@ def _getTargetClass(self):
return UnIndex

def _makeOne(self, *args, **kw):

index = self._getTargetClass()(*args, **kw)

class DummyZCatalog(SimpleItem):
Expand Down Expand Up @@ -145,29 +144,28 @@ def testQuery(record, expect=1):
testQuery(record)

def test_getCounter(self):

index = self._makeOne('counter')

self.assertEqual(index.getCounter(), (0, False))
self.assertEqual(index.getCounter(), 0)

class Dummy(object):
id = 1
counter = 'counter'

obj = Dummy()
index.index_object(obj.id, obj)
self.assertEqual(index.getCounter(), (1, False))
self.assertEqual(index.getCounter(), 1)

index.unindex_object(obj.id)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# unknown id
index.unindex_object(1234)
self.assertEqual(index.getCounter(), (2, False))
self.assertEqual(index.getCounter(), 2)

# clear changes the index
index.clear()
self.assertEqual(index.getCounter(), (3, False))
self.assertEqual(index.getCounter(), 3)

def test_no_type_error(self):
''' Check that on Python 3.6 we do not get a TypeError when trying
Expand Down
6 changes: 1 addition & 5 deletions src/Products/PluginIndexes/unindex.py
Expand Up @@ -308,11 +308,7 @@ def _increment_counter(self):

def getCounter(self):
"""Return a counter which is increased on index changes"""
counter = self._counter is not None and self._counter() or 0
changed = (self._counter is not None and
self._counter._p_changed or False)

return (counter, changed)
return self._counter is not None and self._counter() or 0

def numObjects(self):
"""Return the number of indexed objects."""
Expand Down

0 comments on commit 1be89a4

Please sign in to comment.