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
Example #2
0
    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
Example #3
0
    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")))
Example #4
0
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")))