[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