[CalendarServer-changes] [11307] CalendarServer/branches/users/glyph/q-delete-no-concurrency/twext/ enterprise/test/test_queue.py
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jun 5 11:42:13 PDT 2013
Revision: 11307
http://trac.calendarserver.org//changeset/11307
Author: glyph at apple.com
Date: 2013-06-05 11:42:13 -0700 (Wed, 05 Jun 2013)
Log Message:
-----------
Correct the test case so we're actually testing concurrent deletion.
Modified Paths:
--------------
CalendarServer/branches/users/glyph/q-delete-no-concurrency/twext/enterprise/test/test_queue.py
Modified: CalendarServer/branches/users/glyph/q-delete-no-concurrency/twext/enterprise/test/test_queue.py
===================================================================
--- CalendarServer/branches/users/glyph/q-delete-no-concurrency/twext/enterprise/test/test_queue.py 2013-06-05 18:42:12 UTC (rev 11306)
+++ CalendarServer/branches/users/glyph/q-delete-no-concurrency/twext/enterprise/test/test_queue.py 2013-06-05 18:42:13 UTC (rev 11307)
@@ -645,19 +645,26 @@
return txn.execSQL(schemaText)
yield inTransaction(lambda: self.store.newTransaction("bonus schema"),
doit)
+ def indirectedTransactionFactory(*a):
+ """
+ Allow tests to replace 'self.store.newTransaction' to provide
+ fixtures with extra methods on a test-by-test basis.
+ """
+ return self.store.newTransaction(*a)
def deschema():
@inlineCallbacks
def deletestuff(txn):
for stmt in dropSQL:
yield txn.execSQL(stmt)
- return inTransaction(self.store.newTransaction, deletestuff)
+ return inTransaction(lambda *a: self.store.newTransaction(*a),
+ deletestuff)
self.addCleanup(deschema)
from twisted.internet import reactor
self.node1 = PeerConnectionPool(
- reactor, self.store.newTransaction, 0, schema)
+ reactor, indirectedTransactionFactory, 0, schema)
self.node2 = PeerConnectionPool(
- reactor, self.store.newTransaction, 0, schema)
+ reactor, indirectedTransactionFactory, 0, schema)
class FireMeService(Service, object):
def __init__(self, d):
@@ -725,13 +732,14 @@
# Provide access to a method called 'concurrently' everything using
original = self.store.newTransaction
def decorate(*a, **k):
- result = original()
- result.concurrently = original
+ result = original(*a, **k)
+ result.concurrently = self.store.newTransaction
return result
self.store.newTransaction = decorate
def operation(txn):
return txn.enqueue(DummyWorkItem, a=30, b=40, workID=5678,
+ deleteOnLoad=1,
notBefore=datetime.datetime.utcnow())
proposal = yield inTransaction(self.store.newTransaction, operation)
yield proposal.whenExecuted()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130605/f9d4a2ff/attachment-0001.html>
More information about the calendarserver-changes
mailing list