sayounara
This commit is contained in:
@@ -1,282 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2006, TUBITAK/UEKAE
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# Please read the COPYING file.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import exceptions
|
||||
|
||||
import pisi
|
||||
import pisi.testdb
|
||||
import time
|
||||
|
||||
|
||||
def handle_exception(exception, value, tb):
|
||||
print exception, value, tb
|
||||
if exception == exceptions.KeyboardInterrupt:
|
||||
pisi.api.finalize()
|
||||
print("\n")
|
||||
sys.exit()
|
||||
|
||||
def testPickle(iter):
|
||||
import cPickle
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
start = time.clock()
|
||||
for i in range(iter):
|
||||
size = 0;
|
||||
for pak in packages:
|
||||
pickled = cPickle.dumps(packages[pak],1)
|
||||
size += len(pickled)
|
||||
#pisi.context.packagedb.add_package2(pak, pisi.db.itembyrepodb.installed)
|
||||
#print pak.source.name, pak.installedSize
|
||||
end = time.clock()
|
||||
delta = (end - start)
|
||||
print("Total Packages: %s" % totalPack)
|
||||
print("Total Size: %s, Average Size: %s" % (size, size / totalPack))
|
||||
print("Iterations: %s Total time: %ss. Average time :%ss." % (iter, delta , delta/iter) )
|
||||
pisi.api.finalize()
|
||||
|
||||
def testUnPickle(iter):
|
||||
import cPickle
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
pickles = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
size = 0;
|
||||
for pak in packages:
|
||||
pickled = cPickle.dumps(packages[pak],1)
|
||||
pickles[pak] = pickled
|
||||
|
||||
start = time.clock()
|
||||
for i in range(iter):
|
||||
for name in pickles:
|
||||
package = cPickle.loads(pickles[name])
|
||||
end = time.clock()
|
||||
|
||||
delta = (end - start)
|
||||
print("Total Packages: %s" % totalPack)
|
||||
print("Iterations: %s Total time: %ss. Average time :%ss." % (iter, delta , delta/iter) )
|
||||
pisi.api.finalize()
|
||||
|
||||
def testDatabaseSingleTransaction():
|
||||
import cPickle
|
||||
import pisi.context as ctx
|
||||
import bsddb3.db as bsd
|
||||
from pisi.db.itembyrepodb import ItemByRepoDB
|
||||
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
try:
|
||||
os.unlink("/var/db/pisi/package_perf.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf.bdb.lock")
|
||||
except:
|
||||
pass
|
||||
|
||||
db = ItemByRepoDB('package_perf')
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
start = time.time()
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
for pak in packages:
|
||||
db.add_item(pak, packages[pak], pisi.db.itembyrepodb.installed, txn)
|
||||
txn.commit()
|
||||
|
||||
end = time.time()
|
||||
|
||||
delta = (end - start)
|
||||
print("Total Packages: %s" % totalPack)
|
||||
print("Total time: %.2f" % (delta) )
|
||||
db.close();
|
||||
pisi.api.finalize()
|
||||
|
||||
def testDatabaseFullTransaction():
|
||||
import cPickle
|
||||
import pisi.context as ctx
|
||||
import bsddb3.db as bsd
|
||||
from pisi.db.itembyrepodb import ItemByRepoDB
|
||||
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
try:
|
||||
os.unlink("/var/db/pisi/package_perf.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf.bdb.lock")
|
||||
except:
|
||||
pass
|
||||
|
||||
db = ItemByRepoDB('package_perf')
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
start = time.time()
|
||||
for pak in packages:
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
db.add_item(pak, packages[pak], pisi.db.itembyrepodb.installed, txn)
|
||||
txn.commit()
|
||||
|
||||
#ctx.txn_proc(addAllPacks, None)
|
||||
end = time.time()
|
||||
|
||||
delta = (end - start)
|
||||
print("Total Packages: %s" % totalPack)
|
||||
print("Total time: %.2f" % (delta) )
|
||||
db.close();
|
||||
pisi.api.finalize()
|
||||
|
||||
|
||||
def testDatabaseRead(iter):
|
||||
import cPickle
|
||||
import pisi.context as ctx
|
||||
import bsddb3.db as bsd
|
||||
from pisi.db.itembyrepodb import ItemByRepoDB
|
||||
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
try:
|
||||
os.unlink("/var/db/pisi/package_perf.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf.bdb.lock")
|
||||
except:
|
||||
pass
|
||||
|
||||
db = ItemByRepoDB('package_perf')
|
||||
|
||||
count = 0;
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
for pak in packages:
|
||||
db.add_item(pak, packages[pak], pisi.db.itembyrepodb.installed, txn)
|
||||
count += 1
|
||||
txn.commit()
|
||||
print ( "%s packages written" % count)
|
||||
|
||||
start = time.time()
|
||||
|
||||
for i in range(iter):
|
||||
for name in packageNames:
|
||||
package = db.get_item(name, pisi.db.itembyrepodb.all, txn)
|
||||
|
||||
end = time.time()
|
||||
|
||||
delta = (end - start)
|
||||
print("Total Packages: %s" % totalPack)
|
||||
print("%s iters, Total time: %.2fs., average Time: %.2fs." % (iter, delta, delta/iter) )
|
||||
db.close();
|
||||
pisi.api.finalize()
|
||||
|
||||
def cleanDB():
|
||||
try:
|
||||
os.unlink("/var/db/pisi/package_perf.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf.bdb.lock")
|
||||
os.unlink("/var/db/pisi/package_perf_info.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf_info.lock")
|
||||
os.unlink("/var/db/pisi/package_perf_history.bdb")
|
||||
os.unlink("/var/db/pisi/package_perf_history.bdb.lock")
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def testDatabaseSingleTransaction2(iter):
|
||||
import cPickle
|
||||
import pisi.context as ctx
|
||||
import bsddb3.db as bsd
|
||||
from pisi.db.itembyrepodb import ItemByRepoDB
|
||||
|
||||
cleanDB()
|
||||
pisi.api.init(write=True)
|
||||
|
||||
packageNames = pisi.context.packagedb.list_packages(pisi.db.itembyrepodb.all)
|
||||
packages = {}
|
||||
totalPack = len(packageNames)
|
||||
|
||||
|
||||
dbPack = ItemByRepoDB('package_perf')
|
||||
#dbInfo = ItemByRepoDB('package_perf_info')
|
||||
dbHistory = ItemByRepoDB('package_perf_history')
|
||||
|
||||
for name in packageNames:
|
||||
packages[name] = pisi.context.packagedb.get_package(name, pisi.db.itembyrepodb.all)
|
||||
|
||||
print "Write test.."
|
||||
start = time.time()
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
for pak in packages:
|
||||
packageDAO = pisi.testdb.PackageDAO(packages[pak])
|
||||
#packageInfoDAO = pisi.testdb.PackageInfoDAO(packages[pak])
|
||||
dbPack.add_item(pak, packageDAO, pisi.db.itembyrepodb.installed, txn)
|
||||
#dbInfo.add_item(pak, packageInfoDAO, pisi.db.itembyrepodb.installed, txn)
|
||||
dbHistory.add_item(pak, packages[pak].history, pisi.db.itembyrepodb.installed, txn)
|
||||
txn.commit()
|
||||
end = time.time()
|
||||
|
||||
delta = (end - start)
|
||||
print("Total time: %.2f" % (delta) )
|
||||
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
print "read test. Read only package bodies"
|
||||
start = time.time()
|
||||
for i in range(iter):
|
||||
for name in packageNames:
|
||||
packageDAO = dbPack.get_item(name, pisi.db.itembyrepodb.all, txn)
|
||||
end = time.time()
|
||||
txn.commit()
|
||||
delta = (end - start)
|
||||
print("%s iters, Total time: %.2fs., average Time: %.2fs." % (iter, delta, delta/iter) )
|
||||
|
||||
txn = ctx.dbenv.txn_begin()
|
||||
print "read test. Read only histories"
|
||||
start = time.time()
|
||||
for i in range(iter):
|
||||
for name in packageNames:
|
||||
hist = dbHistory.get_item(name, pisi.db.itembyrepodb.all, txn)
|
||||
end = time.time()
|
||||
txn.commit()
|
||||
delta = (end - start)
|
||||
print("%s iters, Total time: %.2fs., average Time: %.2fs." % (iter, delta, delta/iter) )
|
||||
|
||||
dbPack.close()
|
||||
#dbInfo.close()
|
||||
dbHistory.close()
|
||||
pisi.api.finalize()
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.excepthook = handle_exception
|
||||
#testDatabaseRead(10)
|
||||
testDatabaseSingleTransaction2(20)
|
||||
-105
@@ -1,105 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2005 - 2007, TUBITAK/UEKAE
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# Please read the COPYING file.
|
||||
#
|
||||
|
||||
import os
|
||||
import fcntl
|
||||
import types
|
||||
|
||||
import gettext
|
||||
__trans = gettext.translation('pisi', fallback=True)
|
||||
_ = __trans.ugettext
|
||||
|
||||
import pisi
|
||||
import pisi.util as util
|
||||
import pisi.context as ctx
|
||||
import pisi.db.itembyrepodb as itembyrepodb
|
||||
import pisi.metadata
|
||||
|
||||
class TestDB:
|
||||
def __init__(self):
|
||||
self.db = itembyrepodb.ItemByRepoDB("packages2")
|
||||
|
||||
def addPackage(self):
|
||||
a = "Hello World"
|
||||
self.db.add_item("hello", a, itembyrepodb.installed)
|
||||
|
||||
def getPackage(self, name):
|
||||
return self.db.get_item(name, itembyrepodb.installed)
|
||||
|
||||
def addAllPackages(self):
|
||||
pisi.api.init(write=True)
|
||||
packages = pisi.context.installdb.list_installed()
|
||||
for name in packages:
|
||||
pak = pisi.context.packagedb.get_package(name, itembyrepodb.installed)
|
||||
#pisi.context.packagedb.add_package(pak, itembyrepodb.installed)
|
||||
#print pak.source.name, pak.installedSize
|
||||
pisi.api.finalize()
|
||||
|
||||
if __name__ == "__main__":
|
||||
t = testdb.TestDB()
|
||||
t.addAllPackages()
|
||||
|
||||
class PackageInfoDAO:
|
||||
def __init__(self, package):
|
||||
"""
|
||||
package : pisi.metadata.Package
|
||||
"""
|
||||
self.summary = package.summary
|
||||
self.description = package.description
|
||||
|
||||
|
||||
class PackageDAO:
|
||||
def __init__(self, package):
|
||||
"""
|
||||
package : pisi.metadata.Package
|
||||
"""
|
||||
#
|
||||
#from specfile.Package
|
||||
#
|
||||
self.name = package.name
|
||||
#Summary and description will be in another place
|
||||
self.summary = package.summary
|
||||
self.description = package.description
|
||||
self.isA = package.isA
|
||||
self.partOf = package.partOf
|
||||
self.license = package.license
|
||||
self.icon = package.icon
|
||||
#from dependencies.Dependency
|
||||
self.packageDependencies = package.packageDependencies
|
||||
#String
|
||||
self.componentDependencies = package.componentDependencies
|
||||
self.files = package.files
|
||||
self.conflicts = package.conflicts
|
||||
self.providesComar = package.providesComar
|
||||
self.additionalFiles = package.additionalFiles
|
||||
#List of specfile.UPDATE. History will be in another place
|
||||
#self.history = package.history
|
||||
#
|
||||
#from metadata.Package (This is plain stupid.. classes with same name, extending one another.)
|
||||
#
|
||||
self.build = package.build
|
||||
self.distribution = package.distribution
|
||||
self.distributionRelease = package.distributionRelease
|
||||
self.architecture = package.architecture
|
||||
self.installedSize = package.installedSize
|
||||
self.packageSize = package.packageSize
|
||||
self.packageHash = package.packageHash
|
||||
self.packageURI = package.packageURI
|
||||
#Delta (List of metadata.Delta objects)
|
||||
#self.deltaPackages = package.deltaPackages
|
||||
self.packageFormat = package.packageFormat
|
||||
#Expanded from metadata.Source
|
||||
self.sourceName = package.source.name
|
||||
self.sourceHomepage = package.source.homepage
|
||||
#Expanded from specfile.Packager
|
||||
self.sourcePackagerName = package.source.packager.name
|
||||
self.sourcePackagerEmail = package.source.packager.email
|
||||
Reference in New Issue
Block a user