def test_DBUpgrade(self): # Get the DB db_path = os.path.abspath(self.mktemp()) db = self.old_ProxyDB(db_path) yield db.setGroupMembers("A", ("B", "C", "D",)) membersA = yield db.getMembers("A") membershipsB = yield db.getMemberships("B") self.assertEqual(membersA, set(("B", "C", "D",))) self.assertEqual(membershipsB, set(("A",))) self.assertEqual(set([row[1] for row in (yield db.query("PRAGMA index_list(GROUPS)"))]), set()) db.close() db = None db = ProxySqliteDB(db_path) membersA = yield db.getMembers("A") membershipsB = yield db.getMemberships("B") self.assertEqual(membersA, set(("B", "C", "D",))) self.assertEqual(membershipsB, set(("A",))) self.assertEqual(set([row[1] for row in (yield db.query("PRAGMA index_list(GROUPS)"))]), set(("GROUPNAMES", "MEMBERS"))) db.close() db = None
def test_DBIndexed(self): # Get the DB db_path = os.path.abspath(self.mktemp()) db = ProxySqliteDB(db_path) self.assertEqual( set([ row[1] for row in (yield db.query("PRAGMA index_list(GROUPS)")) ]), set(("GROUPNAMES", "MEMBERS")))
def migrateDelegatesToStore(store): """ Migrate the old sqlite proxyDB data into the store. Remove the sqlite file afterwards. @param store: the store to migrate into @type store: L{CommonDataStore} """ log.warn("Migrating delegates to the store") service = ProxySqliteDB("proxies.sqlite") directory = store.directoryService() txn = store.newTransaction(label="migrateDelegatesToStore") for groupName, memberUID in ( yield service.query( "select GROUPNAME, MEMBER from GROUPS" ) ): if "#" not in groupName: continue delegatorUID, groupType = groupName.split("#") delegatorRecord = yield directory.recordWithUID(delegatorUID) if delegatorRecord is None: continue delegateRecord = yield directory.recordWithUID(memberUID) if delegateRecord is None: continue readWrite = (groupType == "calendar-proxy-write") yield Delegates.addDelegate(txn, delegatorRecord, delegateRecord, readWrite) yield txn.commit() # Remove the old file service.close() os.remove(service.dbpath) journalPath = service.dbpath + "-journal" if os.path.exists(journalPath): os.remove(journalPath)
def test_DBIndexed(self): # Get the DB db_path = os.path.abspath(self.mktemp()) db = ProxySqliteDB(db_path) self.assertEqual(set([row[1] for row in (yield db.query("PRAGMA index_list(GROUPS)"))]), set(("GROUPNAMES", "MEMBERS")))