Skip to content

Commit

Permalink
Fix for test failures, and improved log limit test
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris AtLee committed Sep 24, 2009
1 parent 4c8769f commit 07b8e3d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 63 deletions.
2 changes: 2 additions & 0 deletions buildbot/status/builder.py
Expand Up @@ -1512,6 +1512,8 @@ def __init__(self, buildername, category=None):
self.buildCache = weakref.WeakValueDictionary()
self.buildCache_LRU = []
self.logCompressionLimit = False # default to no compression for tests
self.logMaxSize = None # No default limit
self.logMaxTailSize = None # No tail buffering

# persistence

Expand Down
63 changes: 0 additions & 63 deletions buildbot/test/test_limitlogs.py
Expand Up @@ -100,66 +100,3 @@ def _stop_master(self):

def _master_stopped(self, res):
log.msg("master stopped")

builder_cfg = """from buildbot.process import factory
from buildbot.steps.shell import ShellCommand
from buildbot.buildslave import BuildSlave
f1 = factory.BuildFactory([
ShellCommand(command=['echo', 'really long string'*50]),
])
BuildmasterConfig = c = {}
c['slaves'] = [BuildSlave('bot1', 'sekrit')]
from buildbot.scheduler import Scheduler
c['schedulers'] = [Scheduler('dummy', None, 0.1, ['dummy'])]
c['builders'] = []
c['builders'].append({'name':'dummy', 'slavename':'bot1',
'builddir': 'dummy', 'factory': f1})
c['slavePortnum'] = 0
c['logMaxSize'] = 150
"""
class BuilderLogs(RunMixin, unittest.TestCase):
'''Limit builder log size'''

def testLogMaxSize(self):
rmtree("basedir")
os.mkdir("basedir")
d = self.master.loadConfig(builder_cfg)
d.addCallback(lambda res: self.master.startService())
d.addCallback(lambda res: self.connectSlave())

# Trigger a change
def _send(res):
cm = self.master.change_svc
c = changes.Change("bob", ["Makefile", "foo/bar.c"],
"changed stuff")
cm.addChange(c)
d.addCallback(_send)

# Delay for a bit, so we know we're building
def _delay(res):
d1 = defer.Deferred()
reactor.callLater(0.5, d1.callback, None)
return d1
d.addCallback(_delay)

# Wait until the build is done
def _waitForBuild(res):
b = self.master.botmaster.builders['dummy']
if len(b.builder_status.currentBuilds) > 0:
return b.builder_status.currentBuilds[0].waitUntilFinished()
else:
return defer.succeed(None)
d.addCallback(_waitForBuild)

def _checkLog(res):
builder = self.master.botmaster.builders['dummy']
build = builder.builder_status.getLastFinishedBuild()
text = build.steps[0].logs[0].getText()
headers = build.steps[0].logs[0].getTextWithHeaders()
self.failIf(len(text) > 150, "Text too long")
self.failIf("truncated" not in headers, "Truncated message not found")
d.addCallback(_checkLog)

return d
12 changes: 12 additions & 0 deletions buildbot/test/test_status.py
Expand Up @@ -899,6 +899,18 @@ def _check(res):
return d
testLargeSummary.timeout = 5

def testLimit(self):
l = MyLog(self.basedir, "limit")
l.logMaxSize = 150
for i in range(1000):
l.addStdout("Some data")
l.finish()
t = l.getText()
# Compare against 175 since we truncate logs based on chunks, so we may
# go slightly over the limit
self.failIf(len(t) > 175, "Text too long (%i)" % len(t))
self.failUnless("truncated" in l.getTextWithHeaders(),
"No truncated message found")

class CompressLog(unittest.TestCase):
# compression is not supported unless bz2 is installed
Expand Down

0 comments on commit 07b8e3d

Please sign in to comment.