[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