コード例 #1
0
ファイル: instancestest.py プロジェクト: pombr/conary
    def testInstances(self):
        cx = self.getDB()
        schema.createSchema(cx)
        cx.commit()
        v = versiontable.VersionTable(cx)
        f = flavors.Flavors(cx)
        it = items.Items(cx)
        item = it.addId('foo')
        version = v.addId(versions.VersionFromString('/c@r:d/1.0-1-1'))
        d = deps.parseDep('')
        flavor = f.get(d, None)

        idb = instances.InstanceTable(cx)
        idb.addId(item, version, flavor, clonedFromId = None, troveType = 0)
        self.assertEqual(idb[(item, version, flavor)], 1)
        self.assertEqual(idb.getId(1), (item, version, flavor, 1) )
        del idb

        idb = instances.InstanceTable(cx)
        self.assertEqual(idb[(item, version, flavor)], 1)
        cu = cx.cursor()
        cu.execute("select isPresent, clonedFromId from instances where instanceid = 1")
        row = cu.fetchall()[0]
        self.assertEqual(row[0], 1)
        self.assertEqual(row[1], None)
        idb.update(1, isPresent = 0, clonedFromId = 1)
        cu.execute("select isPresent, clonedFromId from instances where instanceid = 1")
        row = cu.fetchall()[0]
        self.assertEqual(row[0], 0)
        self.assertEqual(row[1], 1)
コード例 #2
0
 def testCreateSchema(self):
     from conary.server import schema
     db = self.getDB()
     schema.createSchema(db)
     db.commit()
     # we sould not fail with "already exists errors"
     schema.createSchema(db)
コード例 #3
0
ファイル: dbstoretest.py プロジェクト: pombr/conary
 def testCreateSchema(self):
     from conary.server import schema
     db = self.getDB()
     schema.createSchema(db)
     db.commit()
     # we sould not fail with "already exists errors"
     schema.createSchema(db)
コード例 #4
0
    def testInstances(self):
        cx = self.getDB()
        schema.createSchema(cx)
        cx.commit()
        v = versiontable.VersionTable(cx)
        f = flavors.Flavors(cx)
        it = items.Items(cx)
        item = it.addId('foo')
        version = v.addId(versions.VersionFromString('/c@r:d/1.0-1-1'))
        d = deps.parseDep('')
        flavor = f.get(d, None)

        idb = instances.InstanceTable(cx)
        idb.addId(item, version, flavor, clonedFromId=None, troveType=0)
        self.assertEqual(idb[(item, version, flavor)], 1)
        self.assertEqual(idb.getId(1), (item, version, flavor, 1))
        del idb

        idb = instances.InstanceTable(cx)
        self.assertEqual(idb[(item, version, flavor)], 1)
        cu = cx.cursor()
        cu.execute(
            "select isPresent, clonedFromId from instances where instanceid = 1"
        )
        row = cu.fetchall()[0]
        self.assertEqual(row[0], 1)
        self.assertEqual(row[1], None)
        idb.update(1, isPresent=0, clonedFromId=1)
        cu.execute(
            "select isPresent, clonedFromId from instances where instanceid = 1"
        )
        row = cu.fetchall()[0]
        self.assertEqual(row[0], 0)
        self.assertEqual(row[1], 1)
コード例 #5
0
    def testInvalidNames(self):
        db = self.getDB()
        schema.createSchema(db)
        na = netauth.NetworkAuthorization(db, "conary.rpath.com")

        try:
            na.addUser("test user", "testpass")
        except errors.InvalidName, e:
            self.assertEqual(str(e), 'InvalidName: test user')
コード例 #6
0
 def testInvalidEntitlementClass(self):
     db = self.getDB()
     schema.createSchema(db)
     na = netauth.NetworkAuthorization(db, "conary.rpath.com")
     self._addUserRole(na, "root", "rootpass")
     na.setAdmin("root", True)
     self.assertRaises(errors.UnknownEntitlementClass,
                       na.addEntitlementKey,
                       ("root", "rootpass", None, None), "group", "1234")
コード例 #7
0
ファイル: trovestoretest.py プロジェクト: pombr/conary
 def _connect(self):
     db = self.getDB()
     schema.createSchema(db)
     schema.setupTempTables(db)
     depSchema.setupTempDepTables(db)
     store = trovestore.TroveStore(db)
     auth = netauth.NetworkAuthorization(db, ['localhost'])
     auth.addUser('anonymous', 'anonymous')
     auth.addRole('anonymous')
     auth.addRoleMember('anonymous', 'anonymous')
     auth.addAcl('anonymous', None, None, write = False, remove = False)
     auth.setAdmin('anonymous', False)
     return store
コード例 #8
0
 def _connect(self):
     db = self.getDB()
     schema.createSchema(db)
     schema.setupTempTables(db)
     depSchema.setupTempDepTables(db)
     store = trovestore.TroveStore(db)
     auth = netauth.NetworkAuthorization(db, ['localhost'])
     auth.addUser('anonymous', 'anonymous')
     auth.addRole('anonymous')
     auth.addRoleMember('anonymous', 'anonymous')
     auth.addAcl('anonymous', None, None, write=False, remove=False)
     auth.setAdmin('anonymous', False)
     return store
コード例 #9
0
ファイル: versionopstest.py プロジェクト: pombr/conary
 def testNodesTable(self):
     db = self.getDB()
     schema.createSchema(db)
     b = versionops.BranchTable(db)
     v = versiontable.VersionTable(db)
     i = items.Items(db)
     sv = versionops.SqlVersioning(db, v, b)
     ver = ThawVersion("/a.b.c@d:e/1:1-1-1")
     
     itemId = i.getOrAddId("foo")
     nodeId, versionId = sv.createVersion(itemId, ver, 0, None)
     cu = db.cursor()
     cu.execute("select sourceItemId from Nodes where nodeId = ?", nodeId)
     self.assertEqual(cu.fetchall()[0][0], None)
     srcId = i.getOrAddId("foo:source")
     sv.nodes.updateSourceItemId(nodeId, srcId)
     cu.execute("select sourceItemId from Nodes where nodeId = ?", nodeId)
     self.assertEqual(cu.fetchall()[0][0], srcId)
コード例 #10
0
ファイル: versionopstest.py プロジェクト: tensor5/conary
    def testNodesTable(self):
        db = self.getDB()
        schema.createSchema(db)
        b = versionops.BranchTable(db)
        v = versiontable.VersionTable(db)
        i = items.Items(db)
        sv = versionops.SqlVersioning(db, v, b)
        ver = ThawVersion("/a.b.c@d:e/1:1-1-1")

        itemId = i.getOrAddId("foo")
        nodeId, versionId = sv.createVersion(itemId, ver, 0, None)
        cu = db.cursor()
        cu.execute("select sourceItemId from Nodes where nodeId = ?", nodeId)
        self.assertEqual(cu.fetchall()[0][0], None)
        srcId = i.getOrAddId("foo:source")
        sv.nodes.updateSourceItemId(nodeId, srcId)
        cu.execute("select sourceItemId from Nodes where nodeId = ?", nodeId)
        self.assertEqual(cu.fetchall()[0][0], srcId)
コード例 #11
0
    def testRenameColumn(self):
        db = self.getDB()
        from conary.server import schema
        schema.createSchema(db)
        db.commit()
        db.loadSchema()

        # simple columns that are not in any sort of FK relationship
        db.renameColumn("branches", "branch", "foo")

        db.renameColumn("changelogs", "name", "author")

        db.renameColumn("changelogs", "message", "msg")
        db.renameColumn("changelogs", "changed", "lastChanged")
        db.renameColumn("dependencies", "class", "cls")
        db.renameColumn("entitlementaccessmap", "entGroupId", "egid")
        db.renameColumn("entitlementgroups", "entGroup", "eg")
        db.renameColumn("entitlementowners", "ownerGroupId", "ogid")
        db.renameColumn("entitlements", "entitlement", "e")
        db.renameColumn("filestreams", "stream", "data")
        db.renameColumn("instances", "changed", "lastChanged")
        db.renameColumn("items", "item", "i")
        db.renameColumn("labelmap", "branchId", "bid")
        db.renameColumn("labelmap", "labelId", "lid")
        db.renameColumn("latestmirror", "mark", "lastMark")
        db.renameColumn("metadata", "timeStamp", "ts")
        db.renameColumn("metadata", "changed", "lastChanged")
        db.renameColumn("metadataitems", "data", "stream")
        db.renameColumn("nodes", "changed", "last_changed")
        db.renameColumn("nodes", "versionId", "vid")
        db.renameColumn("pgpfingerprints", "fingerprint", "fp")
        db.renameColumn("pgpfingerprints", "changed", "lastchanged")
        db.renameColumn("pgpkeys", "changed", "lc")
        db.renameColumn("pgpkeys", "pgpkey", "pk")
        db.renameColumn("pgpkeys", "fingerprint", "fp")
        db.renameColumn("provides", "instanceId", "iid")
        db.renameColumn("provides", "depId", "did")
        db.renameColumn("requires", "depId", "did")
        db.renameColumn("requires", "depCount", "c")
        db.renameColumn("trovefiles", "streamId", "sid")
        db.renameColumn("filepaths", "pathId", "pid")
        db.renameColumn("filepaths", "path", "path")
        db.renameColumn("troveinfo", "infoType", "it")
        db.renameColumn("troveinfo", "changed", "c")
        db.renameColumn("troveinfo", "data", "d")
        db.renameColumn("troveredirects", "flavorId", "fid")
        db.renameColumn("troveredirects", "changed", "ch")
        db.renameColumn("trovetroves", "flags", "fl")
        db.renameColumn("usergroupmembers", "userGroupId", "ugid")
        db.renameColumn("usergroupmembers", "userId", "uid")
        db.renameColumn("usergroups", "canMirror", "cm")
        db.renameColumn("usergroups", "changed", "lastc")
        db.renameColumn("users", "userName", "uname")

        # changing a column that has FKs pointing out
        db.renameColumn("nodes", "itemId", "nodeItemId")
        db.renameColumn("trovetroves", "instanceId", "id1")
        db.renameColumn("trovetroves", "includedId", "id2")

        # renaming a primary key without any FKs pointing to it
        db.renameColumn("labelmap", "labelmapid", "lmid")

        # changing a column that has FKs pointing to it
        if db.driver == "mysql":
            # this fails horribly with constraint violations
            # because MySQL is such a lame toy
            self.assertRaises(dbstore.sqlerrors.ConstraintViolation,
                              db.renameColumn, "items", "itemId", "id")
        else:
            # others should know to update the FKs
            # sqlite does not enforce FKs so this should succeed as well
            db.renameColumn("items", "itemId", "id")

        # test on a table with some entries in it
        cu = db.cursor()
        db.renameColumn("flavors", "flavor", "flavor_string")
        ret, = cu.execute(
            "select * from flavors where flavorId = 0").fetchall()
        self.assertEqual(ret['flavorId'], 0)
        self.assertEqual(ret['flavor_string'], '')

        set1 = cu.execute("select * from flavorscores").fetchall()
        db.renameColumn("flavorscores", "request", "req")
        db.renameColumn("flavorscores", "value", "val")
        set2 = cu.execute("select * from flavorscores").fetchall()
        assert (sorted(set1) == sorted(set2))
コード例 #12
0
ファイル: dbstoretest.py プロジェクト: pombr/conary
    def testRenameColumn(self):
        db = self.getDB()
        from conary.server import schema
        schema.createSchema(db)
        db.commit()
        db.loadSchema()

        # simple columns that are not in any sort of FK relationship
        db.renameColumn("branches", "branch", "foo")

        db.renameColumn("changelogs", "name", "author")

        db.renameColumn("changelogs", "message", "msg")
        db.renameColumn("changelogs", "changed", "lastChanged")
        db.renameColumn("dependencies", "class", "cls")
        db.renameColumn("entitlementaccessmap", "entGroupId", "egid")
        db.renameColumn("entitlementgroups", "entGroup", "eg")
        db.renameColumn("entitlementowners", "ownerGroupId", "ogid")
        db.renameColumn("entitlements", "entitlement", "e")
        db.renameColumn("filestreams", "stream", "data")
        db.renameColumn("instances", "changed", "lastChanged")
        db.renameColumn("items", "item", "i")
        db.renameColumn("labelmap", "branchId", "bid")
        db.renameColumn("labelmap", "labelId", "lid")
        db.renameColumn("latestmirror", "mark", "lastMark")
        db.renameColumn("metadata", "timeStamp", "ts")
        db.renameColumn("metadata", "changed", "lastChanged")
        db.renameColumn("metadataitems", "data", "stream")
        db.renameColumn("nodes", "changed", "last_changed")
        db.renameColumn("nodes", "versionId", "vid")
        db.renameColumn("pgpfingerprints", "fingerprint", "fp")
        db.renameColumn("pgpfingerprints", "changed", "lastchanged")
        db.renameColumn("pgpkeys", "changed", "lc")
        db.renameColumn("pgpkeys", "pgpkey", "pk")
        db.renameColumn("pgpkeys", "fingerprint", "fp")
        db.renameColumn("provides", "instanceId", "iid")
        db.renameColumn("provides", "depId", "did")
        db.renameColumn("requires", "depId", "did")
        db.renameColumn("requires", "depCount", "c")
        db.renameColumn("trovefiles", "streamId", "sid")
        db.renameColumn("filepaths", "pathId", "pid")
        db.renameColumn("filepaths", "path", "path")
        db.renameColumn("troveinfo", "infoType", "it")
        db.renameColumn("troveinfo", "changed", "c")
        db.renameColumn("troveinfo", "data", "d")
        db.renameColumn("troveredirects", "flavorId", "fid")
        db.renameColumn("troveredirects", "changed", "ch")
        db.renameColumn("trovetroves", "flags", "fl")
        db.renameColumn("usergroupmembers", "userGroupId", "ugid")
        db.renameColumn("usergroupmembers", "userId", "uid")
        db.renameColumn("usergroups", "canMirror", "cm")
        db.renameColumn("usergroups", "changed", "lastc")
        db.renameColumn("users", "userName", "uname")

        # changing a column that has FKs pointing out
        db.renameColumn("nodes", "itemId", "nodeItemId")
        db.renameColumn("trovetroves", "instanceId", "id1")
        db.renameColumn("trovetroves", "includedId", "id2")

        # renaming a primary key without any FKs pointing to it
        db.renameColumn("labelmap", "labelmapid", "lmid")

        # changing a column that has FKs pointing to it
        if db.driver == "mysql":
            # this fails horribly with constraint violations
            # because MySQL is such a lame toy
            self.assertRaises(dbstore.sqlerrors.ConstraintViolation,
                              db.renameColumn, "items", "itemId", "id")
        else:
            # others should know to update the FKs
            # sqlite does not enforce FKs so this should succeed as well
            db.renameColumn("items", "itemId", "id")

        # test on a table with some entries in it
        cu = db.cursor()
        db.renameColumn("flavors", "flavor", "flavor_string")
        ret, = cu.execute("select * from flavors where flavorId = 0").fetchall()
        self.assertEqual(ret['flavorId'], 0)
        self.assertEqual(ret['flavor_string'], '')

        set1 = cu.execute("select * from flavorscores").fetchall()
        db.renameColumn("flavorscores", "request", "req")
        db.renameColumn("flavorscores", "value", "val")
        set2 = cu.execute("select * from flavorscores").fetchall()
        assert(sorted(set1) == sorted(set2))
コード例 #13
0
    def _setupDB(self):
        db = self.getDB()
        schema.createSchema(db)
        schema.setupTempTables(db)

        return db
コード例 #14
0
ファイル: versionopstest.py プロジェクト: pombr/conary
    def testSqlVersioning(self):
        db = self.getDB()
        schema.createSchema(db)

        vTbl = versiontable.VersionTable(db)
        bTbl = versionops.BranchTable(db)
        sv = versionops.SqlVersioning(db, vTbl, bTbl)
        i = items.Items(db)
        # we need the FileStreams table for eraseVersion to work
        # properly. It is created as part of the createTroves() call

        v5 = ThawVersion("/conary.rpath.com@test:trunk/5:1.2-5")
        v10 = ThawVersion("/conary.rpath.com@test:trunk/10:1.2-10")
        v15 = ThawVersion("/conary.rpath.com@test:trunk/15:1.2-15")
        v20 = ThawVersion("/conary.rpath.com@test:trunk/20:1.2-20")

        branch = v10.branch()
        itemId = i.addId('foo')
        sv.createBranch(itemId, branch)

        sv.createVersion(itemId, v10, 0, "foo:source")
        assert(bTbl.has_key(branch))
        assert(vTbl.has_key(v10))
        assert(sv.hasVersion(itemId, vTbl[v10]))
        assert(i.has_key("foo:source"))
        assert(not sv.hasVersion(2, vTbl[v10]))

        branchId = bTbl[branch]

        itemId2 = i.addId('bar')
        sv.createBranch(itemId2, branch)
        sv.createVersion(itemId2, v10, 0, None)
        self.assertRaises(versionops.DuplicateVersionError,
                          sv.createVersion, itemId2, v10, 0, None)

        assert([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)]
                    == [ str(v10) ])

        sv.createVersion(1, v20, 0, None)
        assert([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)]
                    == [ str(v20), str(v10) ])

        sv.createVersion(1, v15, 0, None)
        db.commit()
        assert([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)] ==
               [ str(v20), str(v15), str(v10) ])

        sv.createVersion(1, v5, 0, None)
        assert([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)] ==
               [ str(v20), str(v15), str(v10), str(v5) ])

        label = Label("conary.rpath.com@test:trunk")
        assert [bTbl.getId(x) for x in sv.branchesOfLabel(1, label) ]\
                    == [ branch ]

        brLabel = Label("conary.rpath.com@test:br1")

        branch1 = v10.createBranch(brLabel, withVerRel = False)
        branch2 = v20.createBranch(brLabel, withVerRel = False)

        sv.createBranch(1, branch1)
        sv.createBranch(1, branch2)

        assert([bTbl.getId(x) for x in sv.branchesOfLabel(1, brLabel)] == \
               [branch1, branch2])

        assert([bTbl.getId(x) for x in sv.branchesOfItem(1)] ==
                    [ branch, branch1, branch2 ])
コード例 #15
0
ファイル: versionopstest.py プロジェクト: tensor5/conary
    def testSqlVersioning(self):
        db = self.getDB()
        schema.createSchema(db)

        vTbl = versiontable.VersionTable(db)
        bTbl = versionops.BranchTable(db)
        sv = versionops.SqlVersioning(db, vTbl, bTbl)
        i = items.Items(db)
        # we need the FileStreams table for eraseVersion to work
        # properly. It is created as part of the createTroves() call

        v5 = ThawVersion("/conary.rpath.com@test:trunk/5:1.2-5")
        v10 = ThawVersion("/conary.rpath.com@test:trunk/10:1.2-10")
        v15 = ThawVersion("/conary.rpath.com@test:trunk/15:1.2-15")
        v20 = ThawVersion("/conary.rpath.com@test:trunk/20:1.2-20")

        branch = v10.branch()
        itemId = i.addId('foo')
        sv.createBranch(itemId, branch)

        sv.createVersion(itemId, v10, 0, "foo:source")
        assert (bTbl.has_key(branch))
        assert (vTbl.has_key(v10))
        assert (sv.hasVersion(itemId, vTbl[v10]))
        assert (i.has_key("foo:source"))
        assert (not sv.hasVersion(2, vTbl[v10]))

        branchId = bTbl[branch]

        itemId2 = i.addId('bar')
        sv.createBranch(itemId2, branch)
        sv.createVersion(itemId2, v10, 0, None)
        self.assertRaises(versionops.DuplicateVersionError, sv.createVersion,
                          itemId2, v10, 0, None)

        assert ([vTbl.getId(x)
                 for x in sv.versionsOnBranch(1, branchId)] == [str(v10)])

        sv.createVersion(1, v20, 0, None)
        assert ([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)
                 ] == [str(v20), str(v10)])

        sv.createVersion(1, v15, 0, None)
        db.commit()
        assert ([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)
                 ] == [str(v20), str(v15), str(v10)])

        sv.createVersion(1, v5, 0, None)
        assert ([vTbl.getId(x) for x in sv.versionsOnBranch(1, branchId)
                 ] == [str(v20), str(v15),
                       str(v10), str(v5)])

        label = Label("conary.rpath.com@test:trunk")
        assert [bTbl.getId(x) for x in sv.branchesOfLabel(1, label) ]\
                    == [ branch ]

        brLabel = Label("conary.rpath.com@test:br1")

        branch1 = v10.createBranch(brLabel, withVerRel=False)
        branch2 = v20.createBranch(brLabel, withVerRel=False)

        sv.createBranch(1, branch1)
        sv.createBranch(1, branch2)

        assert([bTbl.getId(x) for x in sv.branchesOfLabel(1, brLabel)] == \
               [branch1, branch2])

        assert ([bTbl.getId(x)
                 for x in sv.branchesOfItem(1)] == [branch, branch1, branch2])