From e8737fd9040b71eb18cbef11005274e4ef725b9e Mon Sep 17 00:00:00 2001
From: buildbot <buildbot@tools.ietf.org>
Date: Thu, 9 Jul 2015 11:44:17 +0000
Subject: [PATCH] Tweaked the buildbot master config.  - Legacy-Id: 9702

---
 buildbot/masters/datatracker/master.cfg | 81 ++++++++++++++++++++++---
 1 file changed, 73 insertions(+), 8 deletions(-)

diff --git a/buildbot/masters/datatracker/master.cfg b/buildbot/masters/datatracker/master.cfg
index 59c158325..1dd6acd0b 100644
--- a/buildbot/masters/datatracker/master.cfg
+++ b/buildbot/masters/datatracker/master.cfg
@@ -8,7 +8,7 @@ from buildbot_passwords import *
 # a shorter alias to save typing.
 c = BuildmasterConfig = {}
 
-####### BUILDSLAVES
+# -*- section BuildSlaves -*-
 
 # The 'slaves' list defines the set of recognized buildslaves. Each element is
 # a BuildSlave object, specifying a unique slave name and password.  The same
@@ -19,6 +19,7 @@ c['slaves'] = [
     BuildSlave("datatracker_lin_py27_2", datatracker_lin_py27_2_pw),
     BuildSlave("datatracker_lin_py27_3", datatracker_lin_py27_3_pw),
     BuildSlave("datatracker_osx_py27_4", datatracker_osx_py27_4_pw),
+    BuildSlave("datatracker_lin_py27_5", datatracker_lin_py27_5_pw),
 ]
 
 # 'protocols' contains information about protocols which master will use for
@@ -30,6 +31,7 @@ c['slaves'] = [
 c['protocols'] = {'pb': {'host':'zinfandel.tools.ietf.org', 'port': 9989}}
 
 ####### CHANGESOURCES
+# -*- section ChangeSources -*-
 
 # the 'change_source' setting tells the buildmaster how it should find out
 # about source code changes.
@@ -46,12 +48,14 @@ c['change_source'] = [
 ]
 
 ####### SCHEDULERS
+# -*- section Schedulers -*-
 
 # Configure the Schedulers, which decide how to react to incoming changes.  In this
 # case, just kick off a 'runtests' build
 
 from buildbot.schedulers.basic import SingleBranchScheduler, AnyBranchScheduler
 from buildbot.schedulers.forcesched import ForceScheduler
+from buildbot.schedulers.timed import Nightly
 from buildbot.changes import filter
 c['schedulers'] = [
     # Branch schedulers
@@ -77,6 +81,8 @@ c['schedulers'] = [
         change_filter=filter.ChangeFilter(branch_re='personal/.*')),
     AnyBranchScheduler(name="osx_test_personal",treeStableTimer=60*5,   builderNames=["[personal] Test Suite (OS X)"],
         change_filter=filter.ChangeFilter(branch_re='personal/.*')),
+    # Periodic Schedulers
+    Nightly(name="lin_test_libs", hour=16, minute=42, branch="trunk",   builderNames=["Verify Latest Libs"],),
     # Force schedulers
     ForceScheduler(name="Force PyFlakes",                               builderNames=["Check PyFlakes"]),
     ForceScheduler(name="Force Test Suite",                             builderNames=["Test Suite"]),
@@ -93,6 +99,7 @@ c['schedulers'] = [
 ]
 
 ####### BUILDERS
+# -*- section Builders -*-
 
 # The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
 # what steps, and which slaves can execute them.  Note that any particular build will
@@ -195,7 +202,8 @@ class UnitTest(WarningCountingShellCommand):
 
 c['builders'] = []
 
-# --- Run pyflakes ---
+# -*- section Builder_Run_pyflakes -*-
+
 factory = BuildFactory()
 factory.addStep(SVN(
                 username='buildbot@tools.ietf.org',
@@ -231,7 +239,8 @@ c['builders'].append(BuilderConfig(name="[branch] Check PyFlakes", factory=facto
 c['builders'].append(BuilderConfig(name="[personal] Check PyFlakes", factory=factory, category="3. personal",
                 slavenames=["datatracker_lin_py27_1", "datatracker_lin_py27_2", "datatracker_lin_py27_3"]))
 
-# --- Run tests ---
+# -*- section Builder_TestSuite -*-
+
 factory = BuildFactory()
 factory.addStep(SVN(
                 username='buildbot@tools.ietf.org',
@@ -251,7 +260,7 @@ factory.addStep(ShellCommand(
 factory.addStep(UnitTest(
                 workdir=Interpolate('build/%(src::branch)s'),
                 haltOnFailure=True,
-                command=["ietf/manage.py", "test", "--settings=settings_sqlitetest"],
+                command=["ietf/manage.py", "test", "--settings=settings_sqlitetest", "--verbosity=2", ],
             ))
 # This should be the last action
 factory.addStep(ShellCommand(
@@ -269,8 +278,15 @@ c['builders'].append(BuilderConfig(name="[personal] Test Suite", factory=factory
         slavenames=["datatracker_lin_py27_1", "datatracker_lin_py27_2", "datatracker_lin_py27_3"]))
 
 
-# --- Run tests on os-x ---
+# -*- section Builder_TestSuiteOSX -*-
+
 factory = BuildFactory()
+factory.addStep(ShellCommand(
+                descriptionDone="svn cleanup",
+                workdir=Interpolate('build/%(src::branch)s'),
+                haltOnFailure=True,
+                command=["svn", "cleanup"],
+            ))
 factory.addStep(SVN(
                 username='buildbot@tools.ietf.org',
                 descriptionDone="svn update",
@@ -289,7 +305,7 @@ factory.addStep(ShellCommand(
 factory.addStep(UnitTest(
                 workdir=Interpolate('build/%(src::branch)s'),
                 haltOnFailure=True,
-                command=["ietf/manage.py", "test", "--settings=settings_sqlitetest", "--skip-coverage"],
+                command=["ietf/manage.py", "test", "--settings=settings_sqlitetest", "--skip-coverage", "--verbosity=2", ],
             ))
 
 c['builders'].append(BuilderConfig(name="Test Suite (OS X)", factory=factory, category="1. trunk",
@@ -300,7 +316,8 @@ c['builders'].append(BuilderConfig(name="[personal] Test Suite (OS X)", factory=
         slavenames=["datatracker_osx_py27_4"]))
 
 
-# --- Run test-crawler ---
+# -*- section Builder_TestCrawler -*-
+
 factory = BuildFactory()
 factory.addStep(SVN(
                 username='buildbot@tools.ietf.org',
@@ -334,7 +351,48 @@ c['builders'].append(BuilderConfig(name="Test-Crawler", factory=factory, categor
         slavenames=["datatracker_lin_py27_1", ]))
 
 
+# -*- section Builder_Dependencies -*-
+
+# This build runs pip install --upgrade, to make sure that we install the latest version of all
+# dependencies, in order to get an indication if/when an incompatibility turns up with a new
+# version of a dependency.  The other test suite builders *don't* use --upgrade, in order to not
+# change the external test conditions and produce spurious errors because of version changes in
+# dependencies.
+
+factory = BuildFactory()
+factory.addStep(SVN(
+                username='buildbot@tools.ietf.org',
+                descriptionDone="svn update",
+                workdir=Interpolate('build/%(src::branch)s'),
+                haltOnFailure=True,
+                repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
+                descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
+            ))
+factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s')))
+factory.addStep(ShellCommand(
+                descriptionDone="install/upgrade requirements",
+                workdir=Interpolate('build/%(src::branch)s'),
+                haltOnFailure=True,
+                command=["pip", "install", "--upgrade", "-r", "requirements.txt"],
+            ))
+factory.addStep(ShellCommand(
+                descriptionDone="list installed pyton modules",
+                workdir=Interpolate('build/%(src::branch)s'),
+                haltOnFailure=True,
+                command=["pip", "list"],
+            ))
+factory.addStep(UnitTest(
+                workdir=Interpolate('build/%(src::branch)s'),
+                haltOnFailure=True,
+                command=["ietf/manage.py", "test", "--settings=settings_sqlitetest", "--verbosity=2", ],
+            ))
+
+c['builders'].append(BuilderConfig(name="Verify Latest Libs", factory=factory, category="1. trunk",
+        slavenames=["datatracker_lin_py27_5"]))
+
+
 ####### STATUS TARGETS
+# -*- section StatusTargets -*-
 
 # 'status' is a list of Status Targets. The results of each build will be
 # pushed to these targets. buildbot/status/*.py has a variety to choose from,
@@ -381,13 +439,20 @@ class UsernameIsEmailAddress():
         return name
 
 c['status'].append(mail.MailNotifier(
-    builders = ['Check Pyflakes', 'Test Suite', 'Test-Crawler', ],
     fromaddr='buildbot@tools.ietf.org',
+    sendToInterestedUsers=False,
     extraRecipients=['henrik@levkowetz.com',],
+    mode="problem",
+    ))
+
+c['status'].append(mail.MailNotifier(
+    fromaddr='buildbot@tools.ietf.org',
     lookup=UsernameIsEmailAddress(),
+    mode="problem",
     ))
 
 ####### PROJECT IDENTITY
+# -*- section Project -*-
 
 # the 'title' string will appear at the top of this buildbot
 # installation's html.WebStatus home page (linked to the