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 ])
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])