[CalendarServer-changes] [10850] CalendarServer/branches/users/sagen/testing
source_changes at macosforge.org
source_changes at macosforge.org
Tue Mar 5 13:04:32 PST 2013
Revision: 10850
http://trac.calendarserver.org//changeset/10850
Author: sagen at apple.com
Date: 2013-03-05 13:04:32 -0800 (Tue, 05 Mar 2013)
Log Message:
-----------
Set notBefore based on config.Notifications.CoalesceSeconds
Modified Paths:
--------------
CalendarServer/branches/users/sagen/testing/calendarserver/push/notifier.py
CalendarServer/branches/users/sagen/testing/calendarserver/tap/util.py
CalendarServer/branches/users/sagen/testing/calendarserver/tools/util.py
CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/record.py
CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/test/test_record.py
CalendarServer/branches/users/sagen/testing/twext/enterprise/queue.py
Modified: CalendarServer/branches/users/sagen/testing/calendarserver/push/notifier.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/calendarserver/push/notifier.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/calendarserver/push/notifier.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -18,8 +18,8 @@
Notification framework for Calendar Server
"""
+import datetime
from twext.python.log import LoggingMixIn, Logger
-
from twisted.internet.defer import inlineCallbacks, succeed
from twext.enterprise.dal.record import fromTable
from twext.enterprise.queue import WorkItem
@@ -123,9 +123,10 @@
work queue.
"""
- def __init__(self, store, hostname, reactor=None):
+ def __init__(self, store, hostname, coalesceSeconds, reactor=None):
self.store = store
self.hostname = hostname
+ self.coalesceSeconds = coalesceSeconds
if reactor is None:
from twisted.internet import reactor
@@ -134,7 +135,10 @@
@inlineCallbacks
def send(self, id):
txn = self.store.newTransaction()
- yield txn.enqueue(PushNotificationWork, pushID=self.pushKeyForId(id))
+ notBefore = datetime.datetime.utcnow() + datetime.timedelta(
+ seconds=self.coalesceSeconds)
+ yield txn.enqueue(PushNotificationWork, pushID=self.pushKeyForId(id),
+ notBefore=notBefore)
yield txn.commit()
def newNotifier(self, label="default", id=None, prefix=None):
Modified: CalendarServer/branches/users/sagen/testing/calendarserver/tap/util.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/calendarserver/tap/util.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/calendarserver/tap/util.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -225,7 +225,8 @@
if config.Notifications.Enabled:
# FIXME: NotifierFactory needs reference to the store in order
# to get a txn in order to create a Work item
- notifierFactory = NotifierFactory(None, config.ServerHostName)
+ notifierFactory = NotifierFactory(None, config.ServerHostName,
+ config.Notifications.CoalesceSeconds)
else:
notifierFactory = None
quota = config.UserQuota
Modified: CalendarServer/branches/users/sagen/testing/calendarserver/tools/util.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/calendarserver/tools/util.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/calendarserver/tools/util.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -81,6 +81,7 @@
# to get a txn in order to create a Work item
notifierFactory = NotifierFactory(
None, config.ServerHostName,
+ config.Notifications.CoalesceSeconds,
)
else:
notifierFactory = None
Modified: CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/record.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/record.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/record.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -193,7 +193,7 @@
results = (yield cls.query(transaction,
cls._primaryKeyComparison(primaryKey)))
if len(results) != 1:
- returnValue(None)
+ raise NoSuchRecord()
else:
returnValue(results[0])
Modified: CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/test/test_record.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/test/test_record.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/twext/enterprise/dal/test/test_record.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -98,6 +98,16 @@
@inlineCallbacks
+ def test_missingLoad(self):
+ """
+ Try loading an row which doesn't exist
+ """
+ txn = self.pool.connection()
+ yield txn.execSQL("insert into ALPHA values (:1, :2)", [234, "one"])
+ self.assertFailure(TestRecord.load(txn, 456), NoSuchRecord)
+
+
+ @inlineCallbacks
def test_simpleCreate(self):
"""
When a record object is created, a row with matching column values will
Modified: CalendarServer/branches/users/sagen/testing/twext/enterprise/queue.py
===================================================================
--- CalendarServer/branches/users/sagen/testing/twext/enterprise/queue.py 2013-03-05 19:48:27 UTC (rev 10849)
+++ CalendarServer/branches/users/sagen/testing/twext/enterprise/queue.py 2013-03-05 21:04:32 UTC (rev 10850)
@@ -97,7 +97,7 @@
from twext.enterprise.dal.syntax import SchemaSyntax, Lock, NamedValue
from twext.enterprise.dal.model import ProcedureCall
-from twext.enterprise.dal.record import Record, fromTable
+from twext.enterprise.dal.record import Record, fromTable, NoSuchRecord
from twisted.python.failure import Failure
from twext.enterprise.dal.model import Table, Schema, SQLType, Constraint
@@ -826,8 +826,8 @@
@inlineCallbacks
def work(txn):
workItemClass = WorkItem.forTable(table)
- workItem = yield workItemClass.load(txn, workID)
- if workItem is not None:
+ try:
+ workItem = yield workItemClass.load(txn, workID)
if workItem.group is not None:
yield NamedLock.acquire(txn, workItem.group)
# TODO: what if we fail? error-handling should be recorded someplace,
@@ -836,6 +836,9 @@
yield workItem.delete()
# TODO: verify that workID is the primary key someplace.
yield workItem.doWork()
+ except NoSuchRecord:
+ # The record has already been removed
+ pass
return inTransaction(txnFactory, work)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130305/e64a5536/attachment.html>
More information about the calendarserver-changes
mailing list