Skip to content
This repository has been archived by the owner on May 13, 2020. It is now read-only.

Commit

Permalink
test a LOT of packages
Browse files Browse the repository at this point in the history
  • Loading branch information
Adam Groszer committed Nov 28, 2010
1 parent c97f391 commit 6d26d26
Show file tree
Hide file tree
Showing 2 changed files with 312 additions and 0 deletions.
162 changes: 162 additions & 0 deletions master.cfg
Expand Up @@ -21,6 +21,8 @@ from buildbot.status import html
from buildbot.scheduler import Scheduler, Nightly, Triggerable, Periodic
from buildbot.steps.trigger import Trigger

is_win32 = sys.platform == 'win32'

# This is a sample buildmaster config file. It must be installed as
# 'master.cfg' in your buildmaster's base directory (although the filename
# can be changed with the --basedir option to 'mktap buildbot master').
Expand Down Expand Up @@ -857,6 +859,161 @@ def message_formatter(mode, name, build, results, master_status):
# mail status
######################################

######################################
# stuff taken from gocept.bsquare

bsquare_platform = PLATFORMS['py_265_win32']
bsquare_platname = 'py_265_32'

def bsquare_split_file(path):
pieces = path.split("/")
if len(pieces) < 2:
return None
project, branch = pieces[0], pieces[1]
if branch != "trunk":
return None
return ("%s/%s" % (project, branch), "/".join(pieces[2:]))


def bsquare_make_factory(svn_url):
f = factory.BuildFactory()
f.addStep(SVN(baseURL=svn_url, mode='copy'))

#f.addStep(Compile(name='bootstrap',
# command='buildout bootstrap .',
# description=['bootstrapping'],
# descriptionDone=['bootstrap']))
f.addStep(shell.ShellCommand(
command=[bsquare_platform.python, r"c:\buildmaster\bootstrap.py"],
haltOnFailure=True,
name="bootstrap",
description="bootstrap"))

#if is_win32:
# command = "bin\\buildout.exe"
#else:
# command = 'bin/buildout'
#f.addStep(Compile(name="buildout",
# command=command,
# description=['building'],
# descriptionDone=['build']))

f.addStep(shell.ShellCommand(
command=bsquare_platform.withcompiler % r"bin\buildout.exe",
haltOnFailure=True,
name="buildout",
description="buildout",
timeout=3600))


if is_win32:
command = "bin\\test.exe --exit-with-status -1"
else:
command = 'bin/test --exit-with-status -1' #-1 == stop on first error

f.addStep(Test(name="test",
command=command,
description=['testing'],
descriptionDone=['tests']))

f.treeStableTimer = 300
return f


def bsquare_configure(c,
svn_url, http_port=8010, allowForce=False,
svnuser = None, svnpasswd = None,
pollinterval = 30, nightlyhour=None,
poller = None, makefactory = bsquare_make_factory,
maxConcurrent = 2,
svnbin = 'svn',
slow_lock = None):
"""Creates a buildout master configuration.
The configuration returned is almost functional. You just need to add
slaves.
Options are as follows:
* svn_url: URL of the SVN repository
* http_port: where buildbot will listen as an HTTP server
* allowForce: allow force builds (True/False)
* svnuser: username to be passed to svn
* svnpasswd: password to be passed to svn
* pollinterval: interval in seconds to poll the svn repo for changes
* nightlyhour: run nightly builds at this hour
* poller: custom poller object instance to be used instead of SVNPoller
* makefactory:
* can a simple callable factory that gets the svn_url
* can be a dict of factories getting svn_url keyed by project name
* ``__default__`` is a special key, bsquare reverts to this factory
first when there is none for a project
* bsquare reverts to make_factory as last
* maxConcurrent: maximum number of concurrent builds
* svnbin: passed directly to SVNPoller (win32 seems to be picky about
svn location)
"""
if poller is None:
c['change_source'] = SVNPoller(svn_url,
split_file=bsquare_split_file,
svnuser=svnuser,
svnpasswd=svnpasswd,
pollinterval=pollinterval,
svnbin=svnbin)
else:
c['change_source'] = poller

if slow_lock is None:
slow_lock = locks.SlaveLock("cpu", maxCount=maxConcurrent)

projects = open("project-list.cfg", "rb").readlines()
projects = [x.strip() for x in projects]

for project in projects:
if not project or project.startswith('#'):
continue #comment or empty line

if isinstance(makefactory, dict):
f = makefactory.get(project,
makefactory.get('__default__', makefactory))
f = f(svn_url)
else:
f = makefactory(svn_url)

bname = '%s_%s' % (project, bsquare_platname)

c['builders'].append({
'name': bname,
'slavename': 'local',
'builddir': project,
'factory': f,
'locks': [slow_lock],
})
del f

c['schedulers'].append(Scheduler(
name = bname,
branch = "%s/trunk" % project,
treeStableTimer = pollinterval*2+10,
builderNames = [bname]))

if nightlyhour is not None:
c['schedulers'].append(Nightly(
"%s nightly" % project, [bname], hour=[nightlyhour],
branch="%s/trunk" % project))

c['status'].append(
MailNotifier(mode="failing",
fromaddr=FROMADDR,
extraRecipients=["agroszer@gmail.com"],
sendToInterestedUsers=False,
builders=[bname],
messageFormatter=message_formatter)
)

return c
# stuff taken from gocept.bsquare
######################################

#let's stick with ONE test
slow_lock = locks.SlaveLock("cpu", maxCount=1)
Expand All @@ -879,6 +1036,11 @@ setup_zc_buildout_dev_tests(slow_lock, hour=20, minute=30)
setup_ZODB_dev_tests(slow_lock, hour=20, minute=40)
setup_BB_dev_tests(slow_lock, hour=20, minute=50)

bsquare_configure(c,
'svn://svn.zope.org/repos/main/',
pollinterval = 300,
nightlyhour=None,
slow_lock = slow_lock)

#NO proxy via apache, so it can be kicked locally at least
c['status'].append(html.WebStatus(http_port=8009, allowForce=True, logRotateLength=100000000))
Expand Down
150 changes: 150 additions & 0 deletions project-list.cfg
@@ -0,0 +1,150 @@
#ZTK:
zope.annotation
zope.applicationcontrol
zope.authentication
zope.broken
zope.browser
zope.browsermenu
zope.browserpage
zope.browserresource
zope.cachedescriptors
zope.catalog
zope.component
zope.componentvocabulary
zope.configuration
zope.container
zope.contentprovider
zope.contenttype
zope.copy
zope.copypastemove
zope.datetime
zope.deferredimport
zope.deprecation
zope.dottedname
zope.dublincore
zope.error
zope.event
zope.exceptions
zope.filerepresentation
zope.formlib
zope.hookable
zope.i18n
zope.i18nmessageid
zope.index
zope.interface
zope.intid
zope.keyreference
zope.lifecycleevent
zope.location
zope.login
zope.mimetype
zope.minmax
zope.pagetemplate
zope.password
zope.pluggableauth
zope.principalannotation
zope.principalregistry
zope.processlifetime
zope.proxy
zope.ptresource
zope.publisher
zope.ramcache
zope.schema
zope.security
zope.securitypolicy
zope.sendmail
zope.sequencesort
zope.server
zope.session
zope.site
zope.size
zope.structuredtext
zope.tal
zope.tales
zope.testing
zope.testrunner
zope.traversing
zope.viewlet
#zopeapp:
zc.sourcefactory
zope.app.applicationcontrol
zope.app.appsetup
zope.app.authentication
zope.app.basicskin
zope.app.broken
zope.app.component
zope.app.container
zope.app.content
zope.app.debug
zope.app.dependable
zope.app.error
zope.app.exception
zope.app.folder
zope.app.form
zope.app.generations
zope.app.http
zope.app.i18n
zope.app.locales
zope.app.localpermission
zope.app.pagetemplate
zope.app.principalannotation
zope.app.publication
zope.app.publisher
zope.app.renderer
zope.app.rotterdam
zope.app.schema
zope.app.security
zope.app.testing
zope.app.wsgi
zope.app.zcmlfiles
zope.app.zopeappgenerations
zope.generations
zope.testbrowser
#my wild choices:
z3c.authenticator
z3c.baseregistry
z3c.batching
z3c.breadcrumb
z3c.configurator
z3c.contents
z3c.form
z3c.formui
z3c.json
z3c.jsonrpc
z3c.jsonrpcproxy
z3c.jsontree
z3c.language.negotiator
z3c.language.session
z3c.language.switch
z3c.layer.pagelet
z3c.layer.ready2go
z3c.macro
z3c.menu.ready2go
z3c.pagelet
z3c.password
z3c.pdftemplate
z3c.ptcompat
z3c.recipe.paster
z3c.rml
z3c.sampledata
z3c.table
z3c.tabular
z3c.template
z3c.testing
z3c.viewtemplate
z3c.xmlhttp
z3c.zrtresource
zc.catalog
zc.configuration
zc.i18n
zc.lockfile
zc.monitor
zc.ngi
zc.queue
zc.recipe.egg
zc.resourcelibrary
zc.table

zope.app.interface
zope.app.server
zope.app.session

0 comments on commit 6d26d26

Please sign in to comment.