本文整理汇总了Python中buildbot.util.lru.LRUCache.set_max_size方法的典型用法代码示例。如果您正苦于以下问题:Python LRUCache.set_max_size方法的具体用法?Python LRUCache.set_max_size怎么用?Python LRUCache.set_max_size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buildbot.util.lru.LRUCache
的用法示例。
在下文中一共展示了LRUCache.set_max_size方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BuilderStatus
# 需要导入模块: from buildbot.util.lru import LRUCache [as 别名]
# 或者: from buildbot.util.lru.LRUCache import set_max_size [as 别名]
#.........这里部分代码省略.........
Status object shortly after we are created or loaded from disk.
"""
existing_builds = [int(f)
for f in os.listdir(self.basedir)
if re.match(r"^\d+$", f)]
if existing_builds:
self.nextBuildNumber = max(existing_builds) + 1
else:
self.nextBuildNumber = 0
def saveYourself(self):
for b in self.currentBuilds:
if not b.isFinished:
# interrupted build, need to save it anyway.
# BuildStatus.saveYourself will mark it as interrupted.
b.saveYourself()
filename = os.path.join(self.basedir, "builder")
tmpfilename = filename + ".tmp"
try:
with open(tmpfilename, "wb") as f:
pickle.dump(self, f, -1)
if runtime.platformType == 'win32':
# windows cannot rename a file on top of an existing one
if os.path.exists(filename):
os.unlink(filename)
os.rename(tmpfilename, filename)
except Exception:
log.msg("unable to save builder %s" % self.name)
log.err()
# build cache management
def setCacheSize(self, size):
self.buildCache.set_max_size(size)
def makeBuildFilename(self, number):
return os.path.join(self.basedir, "%d" % number)
def getBuildByNumber(self, number):
return self.buildCache.get(number)
def loadBuildFromFile(self, number):
filename = self.makeBuildFilename(number)
try:
log.msg("Loading builder %s's build %d from on-disk pickle"
% (self.name, number))
with open(filename, "rb") as f:
build = pickle.load(f)
build.setProcessObjects(self, self.master)
# (bug #1068) if we need to upgrade, we probably need to rewrite
# this pickle, too. We determine this by looking at the list of
# Versioned objects that have been unpickled, and (after doUpgrade)
# checking to see if any of them set wasUpgraded. The Versioneds'
# upgradeToVersionNN methods all set this.
versioneds = styles.versionedsToUpgrade
styles.doUpgrade()
if True in [hasattr(o, 'wasUpgraded') for o in versioneds.values()]:
log.msg("re-writing upgraded build pickle")
build.saveYourself()
# check that logfiles exist
build.checkLogfiles()
return build
except IOError:
raise IndexError("no such build %d" % number)
示例2: BuilderStatus
# 需要导入模块: from buildbot.util.lru import LRUCache [as 别名]
# 或者: from buildbot.util.lru.LRUCache import set_max_size [as 别名]
class BuilderStatus(styles.Versioned):
"""I handle status information for a single process.build.Builder object.
That object sends status changes to me (frequently as Events), and I
provide them on demand to the various status recipients, like the HTML
waterfall display and the live status clients. It also sends build
summaries to me, which I log and provide to status clients who aren't
interested in seeing details of the individual build steps.
I am responsible for maintaining the list of historic Events and Builds,
pruning old ones, and loading them from / saving them to disk.
I live in the buildbot.process.build.Builder object, in the
.builder_status attribute.
@type tags: None or list of strings
@ivar tags: user-defined "tag" this builder has; can be
used to filter on in status clients
"""
implements(interfaces.IBuilderStatus, interfaces.IEventSource)
persistenceVersion = 2
persistenceForgets = ('wasUpgraded', )
tags = None
currentBigState = "offline" # or idle/waiting/interlocked/building
basedir = None # filled in by our parent
def __init__(self, buildername, tags, master, description):
self.name = buildername
self.tags = tags
self.description = description
self.master = master
self.workernames = []
self.events = []
# these three hold Events, and are used to retrieve the current
# state of the boxes.
self.lastBuildStatus = None
self.currentBuilds = []
self.nextBuild = None
self.watchers = []
self.buildCache = LRUCache(self.cacheMiss)
# build cache management
def setCacheSize(self, size):
self.buildCache.set_max_size(size)
def getBuildByNumber(self, number):
return self.buildCache.get(number)
def cacheMiss(self, number, **kwargs):
# If kwargs['val'] exists, this is a new value being added to
# the cache. Just return it.
if 'val' in kwargs:
return kwargs['val']
# first look in currentBuilds
for b in self.currentBuilds:
if b.number == number:
return b
# Otherwise it is in the database and thus inaccesible.
return None
def prune(self, events_only=False):
pass
# IBuilderStatus methods
def getName(self):
# if builderstatus page does show not up without any reason then
# str(self.name) may be a workaround
return self.name
def setDescription(self, description):
# used during reconfig
self.description = description
def getDescription(self):
return self.description
def getState(self):
return (self.currentBigState, self.currentBuilds)
def getWorkers(self):
return [self.status.getWorker(name) for name in self.workernames]
def getPendingBuildRequestStatuses(self):
# just assert 0 here. According to dustin the whole class will go away
# soon.
assert 0
db = self.status.master.db
d = db.buildrequests.getBuildRequests(claimed=False,
buildername=self.name)
@d.addCallback
def make_statuses(brdicts):
return [BuildRequestStatus(self.name, brdict['brid'],
self.status, brdict=brdict)
#.........这里部分代码省略.........