[CalendarServer-changes] [15468] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Tue Mar 1 13:17:14 PST 2016
Revision: 15468
http://trac.calendarserver.org//changeset/15468
Author: cdaboo at apple.com
Date: 2016-03-01 13:17:13 -0800 (Tue, 01 Mar 2016)
Log Message:
-----------
Make sure null entries in old resourceinfo.sql databases don't prevent upgrade/migration from happening.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/test/test_upgrade.py
CalendarServer/trunk/twistedcaldav/upgrade.py
Modified: CalendarServer/trunk/twistedcaldav/test/test_upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_upgrade.py 2016-03-01 21:14:32 UTC (rev 15467)
+++ CalendarServer/trunk/twistedcaldav/test/test_upgrade.py 2016-03-01 21:17:13 UTC (rev 15468)
@@ -14,29 +14,32 @@
# limitations under the License.
##
-import cPickle
-import hashlib
-import os
-import zlib
from twisted.internet.defer import inlineCallbacks, succeed
from twisted.python.filepath import FilePath
+from twisted.python.reflect import namedClass
+
from twistedcaldav.config import config
from twistedcaldav.directory.calendaruserproxy import ProxySqliteDB
+from twistedcaldav.directory.resourceinfo import ResourceInfoDatabase
from twistedcaldav.test.util import StoreTestCase
-from twistedcaldav.upgrade import (
- xattrname, upgradeData, updateFreeBusySet,
- removeIllegalCharacters, normalizeCUAddrs,
- loadDelegatesFromXMLintoProxyDB, migrateDelegatesToStore,
- upgradeResourcesXML, upgradeAugmentsXML
-)
+from twistedcaldav.upgrade import xattrname, upgradeData, updateFreeBusySet, \
+ removeIllegalCharacters, normalizeCUAddrs, \
+ loadDelegatesFromXMLintoProxyDB, migrateDelegatesToStore, \
+ upgradeResourcesXML, upgradeAugmentsXML, migrateAutoSchedule
+
from txdav.caldav.datastore.index_file import db_basename
from txdav.caldav.datastore.scheduling.imip.mailgateway import MailGatewayTokensDatabase
from txdav.who.delegates import Delegates
from txdav.xml.parser import WebDAVDocument
+import cPickle
+import hashlib
+import os
+import zlib
+
freeBusyAttr = xattrname(
"{urn:ietf:params:xml:ns:caldav}calendar-free-busy-set"
)
@@ -1505,6 +1508,50 @@
sqliteProxyService.close()
+ @inlineCallbacks
+ def test_migrateAutoSchedule(self):
+
+ serviceClass = {
+ "xml": "twistedcaldav.directory.augment.AugmentXMLDB",
+ }
+ augmentClass = namedClass(serviceClass[config.AugmentService.type])
+
+ # Auto-schedule not currently set
+ augmentService = augmentClass(**config.AugmentService.params)
+ augmentRecord = (
+ yield augmentService.getAugmentRecord(
+ "mercury",
+ "locations"
+ )
+ )
+ self.assertEqual(augmentRecord.autoScheduleMode, "default")
+
+ # Create bogus record in resourceinfo db
+ resourceInfoDatabase = ResourceInfoDatabase(config.DataRoot)
+ resourceInfoDatabase._db_execute(
+ "insert into RESOURCEINFO (GUID, AUTOSCHEDULE) values (:1, :2)",
+ "mercury", 1,
+ )
+ resourceInfoDatabase._db_execute(
+ "insert into RESOURCEINFO (GUID, AUTOSCHEDULE) values (:1, :2)",
+ None, 1,
+ )
+ resourceInfoDatabase._db_commit()
+
+ # Migrate auto-schedule from sqlite into directory
+ yield migrateAutoSchedule(config, self.directory)
+
+ # Auto-schedule now set
+ augmentService = augmentClass(**config.AugmentService.params)
+ augmentRecord = (
+ yield augmentService.getAugmentRecord(
+ "mercury",
+ "locations"
+ )
+ )
+ self.assertEqual(augmentRecord.autoScheduleMode, "automatic")
+
+
def test_resourcesXML(self):
"""
Verify conversion of old resources.xml format to twext.who.xml format
Modified: CalendarServer/trunk/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/upgrade.py 2016-03-01 21:14:32 UTC (rev 15467)
+++ CalendarServer/trunk/twistedcaldav/upgrade.py 2016-03-01 21:17:13 UTC (rev 15468)
@@ -1011,18 +1011,19 @@
"select GUID, AUTOSCHEDULE from RESOURCEINFO"
)
for uid, autoSchedule in results:
- record = yield directory.recordWithUID(uid)
- if record is not None:
- augmentRecord = (
- yield augmentService.getAugmentRecord(
- uid,
- directory.recordTypeToOldName(record.recordType)
+ if uid is not None:
+ record = yield directory.recordWithUID(uid)
+ if record is not None:
+ augmentRecord = (
+ yield augmentService.getAugmentRecord(
+ uid,
+ directory.recordTypeToOldName(record.recordType)
+ )
)
- )
- augmentRecord.autoScheduleMode = (
- "automatic" if autoSchedule else "default"
- )
- augmentRecords.append(augmentRecord)
+ augmentRecord.autoScheduleMode = (
+ "automatic" if autoSchedule else "default"
+ )
+ augmentRecords.append(augmentRecord)
if augmentRecords:
yield augmentService.addAugmentRecords(augmentRecords)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20160301/ec88fbea/attachment-0001.html>
More information about the calendarserver-changes
mailing list