def testDirectoryService_newParam(self): self.assertEquals(config.DirectoryService.type, "xml") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml") config.update({"DirectoryService": {"type": "opendirectory"}}) self.assertEquals(config.DirectoryService.type, "opendirectory") self.assertEquals(config.DirectoryService.params.node, "/Search")
def testDirectoryService_sameType(self): self.assertEquals(config.DirectoryService.type, "twistedcaldav.directory.xmlfile.XMLDirectoryService") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml") config.update({"DirectoryService": {"type": "twistedcaldav.directory.xmlfile.XMLDirectoryService"}}) self.assertEquals(config.DirectoryService.type, "twistedcaldav.directory.xmlfile.XMLDirectoryService") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml")
def testDirectoryService_sameType(self): self.assertEquals(config.DirectoryService.type, "xml") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml") config.update({"DirectoryService": {"type": "xml"}}) self.assertEquals(config.DirectoryService.type, "xml") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml")
def testDirectoryService_newParam(self): self.assertEquals(config.DirectoryService.type, "twistedcaldav.directory.xmlfile.XMLDirectoryService") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml") config.update({"DirectoryService": {"type": "twistedcaldav.directory.appleopendirectory.OpenDirectoryService"}}) self.assertEquals(config.DirectoryService.type, "twistedcaldav.directory.appleopendirectory.OpenDirectoryService") self.assertEquals(config.DirectoryService.params.node, "/Search")
def doWork(self): if self.debug: # Turn on debug logging for this module config.LogLevels[__name__] = "debug" else: config.LogLevels[__name__] = "info" config.update() homes = yield self.getMatchingHomeUIDs() if not homes: log.info("No homes to process") returnValue(0) if self.dryrun: log.info("Purge dry run only") log.info("Searching for old events...") purge = set() homes = yield self.getMatchingHomeUIDs() for home_id, owner_uid in homes: purge.update((yield self.getResourcesToPurge(home_id, owner_uid))) if self.dryrun: eventCount = len(purge) if eventCount == 0: log.info("No events are older than {cutoff}", cutoff=self.cutoff) elif eventCount == 1: log.info("1 event is older than {cutoff}", cutoff=self.cutoff) else: log.info("{count} events are older than {cutoff}", count=eventCount, cutoff=self.cutoff) returnValue(eventCount) purge = list(purge) purge.sort() totalEvents = len(purge) log.info("Removing {len} events older than {cutoff}...", len=len(purge), cutoff=self.cutoff) numEventsRemoved = -1 totalRemoved = 0 while numEventsRemoved: numEventsRemoved = (yield self.purgeResources(purge[:self.batchSize])) if numEventsRemoved: totalRemoved += numEventsRemoved log.debug(" Removed {removed} of {total} events...", removed=totalRemoved, total=totalEvents) purge = purge[numEventsRemoved:] if totalRemoved == 0: log.info("No events were removed") elif totalRemoved == 1: log.info("1 event was removed in total") else: log.info("{total} events were removed in total", total=totalRemoved) returnValue(totalRemoved)
def doWork(self): if self.debug: # Turn on debug logging for this module config.LogLevels[__name__] = "debug" else: config.LogLevels[__name__] = "info" config.update() homes = yield self.getMatchingHomeUIDs() if not homes: log.info("No homes to process") returnValue(0) if self.dryrun: log.info("Purge dry run only") log.info("Searching for old events...") purge = set() homes = yield self.getMatchingHomeUIDs() for home_id, owner_uid in homes: purge.update((yield self.getResourcesToPurge(home_id, owner_uid))) if self.dryrun: eventCount = len(purge) if eventCount == 0: log.info("No events are older than %s" % (self.cutoff,)) elif eventCount == 1: log.info("1 event is older than %s" % (self.cutoff,)) else: log.info("%d events are older than %s" % (eventCount, self.cutoff)) returnValue(eventCount) purge = list(purge) purge.sort() totalEvents = len(purge) log.info("Removing {} events older than {}...".format(len(purge), self.cutoff,)) numEventsRemoved = -1 totalRemoved = 0 while numEventsRemoved: numEventsRemoved = (yield self.purgeResources(purge[:self.batchSize])) if numEventsRemoved: totalRemoved += numEventsRemoved log.debug(" Removed {} of {} events...".format(totalRemoved, totalEvents)) purge = purge[numEventsRemoved:] if totalRemoved == 0: log.info("No events were removed") elif totalRemoved == 1: log.info("1 event was removed in total") else: log.info("%d events were removed in total" % (totalRemoved,)) returnValue(totalRemoved)
def testComplianceClasses(self): resource = CalDAVResource() config.EnableProxyPrincipals = True self.assertTrue("calendar-proxy" in resource.davComplianceClasses()) config.EnableProxyPrincipals = False self.assertTrue( "calendar-proxy" not in resource.davComplianceClasses()) self.assertTrue( "calendarserver-group-sharee" in resource.davComplianceClasses()) config.Sharing.Calendars.Groups.Enabled = False config.update() self.assertTrue("calendarserver-group-sharee" not in resource.davComplianceClasses()) config.Sharing.Calendars.Groups.Enabled = True config.update() self.assertTrue( "calendarserver-group-attendee" in resource.davComplianceClasses()) config.GroupAttendees.Enabled = False config.update() self.assertTrue("calendarserver-group-attendee" not in resource.davComplianceClasses()) config.GroupAttendees.Enabled = True config.update()
def testUpdateAndReload(self): self.assertEquals(config.HTTPPort, 0) config.load(self.testConfig) self.assertEquals(config.HTTPPort, 8008) config.update({"HTTPPort": 80}) self.assertEquals(config.HTTPPort, 80) config.reload() self.assertEquals(config.HTTPPort, 8008)
def testComplianceClasses(self): resource = CalDAVResource() config.EnableProxyPrincipals = True self.assertTrue("calendar-proxy" in resource.davComplianceClasses()) config.EnableProxyPrincipals = False self.assertTrue("calendar-proxy" not in resource.davComplianceClasses()) self.assertTrue("calendarserver-group-sharee" in resource.davComplianceClasses()) config.Sharing.Calendars.Groups.Enabled = False config.update() self.assertTrue("calendarserver-group-sharee" not in resource.davComplianceClasses()) config.Sharing.Calendars.Groups.Enabled = True config.update() self.assertTrue("calendarserver-group-attendee" in resource.davComplianceClasses()) config.GroupAttendees.Enabled = False config.update() self.assertTrue("calendarserver-group-attendee" not in resource.davComplianceClasses()) config.GroupAttendees.Enabled = True config.update()
def testMerge(self): self.assertEquals(config.MultiProcess.StaggeredStartup.Enabled, False) config.update({"MultiProcess": {}}) self.assertEquals(config.MultiProcess.StaggeredStartup.Enabled, False)
def testUpdating(self): self.assertEquals(config.SSLPort, 0) config.update({"SSLPort": 8443}) self.assertEquals(config.SSLPort, 8443)
def testDirectoryService_unknownType(self): self.assertEquals(config.DirectoryService.type, "twistedcaldav.directory.xmlfile.XMLDirectoryService") self.assertEquals(config.DirectoryService.params.xmlFile, "accounts.xml") config.update({"DirectoryService": {"type": "twistedcaldav.test.test_config.SuperDuperAwesomeService"}})
# Load in suitable file extension/content-type map from OS X # from txweb2.static import File, loadMimeTypes File.contentTypes = loadMimeTypes(( "/etc/apache2/mime.types", "/etc/httpd/mime.types", )) # # Register additional WebDAV XML elements # from twistedcaldav.config import config config.update() import twistedcaldav.caldavxml import twistedcaldav.carddavxml import twistedcaldav.mkcolxml import twistedcaldav.customxml import twistedcaldav.timezonexml twistedcaldav # Shhh.. pyflakes # # DefaultHTTPHandler # from txweb2.http_headers import DefaultHTTPHandler, last, singleHeader