def setUp(self): super(BuildFarmTests, self).setUp() self.buildfarm = BuildFarm(self.path) self.write_compilers(["cc"]) self.write_hosts({"myhost": "Fedora", "charis": "Debian"}) self.write_trees({"trivial": {"scm": "git", "repo": "git://foo", "branch": "master"}, "other": {"scm": "git", "repo": "other.git", "branch": "HEAD"}}) self.buildfarm.commit() self.x = BuildFarm(self.path)
def setUp(self): super(BuildResultStoreTests, self).setUp() self.buildfarm = BuildFarm(self.path) self.write_compilers(["cc", "gcc"]) self.write_hosts({"charis": "Some machine", "myhost": "Another host"}) self.x = self.buildfarm.builds
# You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # from buildfarm import ( BuildFarm, hostdb, ) import commands import os import smtplib import sys import time from email.MIMEText import MIMEText buildfarm = BuildFarm() def update_rsyncd_secrets(): temp_rsyncd_secrets = os.path.join(os.path.dirname(__file__), "../rsyncd.secrets.new") f = open(temp_rsyncd_secrets, "w") f.writelines(buildfarm.hostdb.create_rsync_secrets()) f.close() os.rename(temp_rsyncd_secrets, "../rsyncd.secrets") dry_run = False print "Samba Build farm management tool" print "================================" args = sys.argv[1:]
# You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # from buildfarm import ( BuildFarm, hostdb, ) import commands import os import smtplib import sys import time from email.MIMEText import MIMEText buildfarm = BuildFarm() def update_rsyncd_secrets(): temp_rsyncd_secrets = os.path.join(os.path.dirname(__file__), "../rsyncd.secrets.new") f = open(temp_rsyncd_secrets, "w") f.writelines(buildfarm.hostdb.create_rsync_secrets()) f.close() os.rename(temp_rsyncd_secrets, "../rsyncd.secrets") dry_run = False print "Samba Build farm management tool"
import smtplib parser = optparse.OptionParser("import-and-analyse [options]") parser.add_option( "--dry-run", help= "Will cause the script to send output to stdout instead of to sendmail.", action="store_true") parser.add_option("--verbose", help="Be verbose", action="count") (opts, args) = parser.parse_args() resource.setrlimit(resource.RLIMIT_RSS, (300000, 300000)) resource.setrlimit(resource.RLIMIT_DATA, (300000, 300000)) buildfarm = BuildFarm(timeout=40.0) smtp = smtplib.SMTP() smtp.connect() def check_and_send_mails(cur, old): if cur.tree is "waf": # no point sending emails, as the email addresses are invalid return if cur.tree is "samba_3_waf": # no emails for this until it stabilises a bit return
) from email.mime.text import MIMEText import optparse import resource import smtplib parser = optparse.OptionParser("import-and-analyse [options]") parser.add_option("--dry-run", help="Will cause the script to send output to stdout instead of to sendmail.", action="store_true") parser.add_option("--verbose", help="Be verbose", action="count") (opts, args) = parser.parse_args() resource.setrlimit(resource.RLIMIT_RSS, (300000, 300000)) resource.setrlimit(resource.RLIMIT_DATA, (300000, 300000)) buildfarm = BuildFarm(timeout=40.0) smtp = smtplib.SMTP() smtp.connect() def broken_build_check(builds, second_build, rev): original_build = second_build third_build = None first_build = None count = 1 if second_build.tree is "waf": # no point sending emails, as the email addresses are invalid return None
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # from buildfarm import BuildFarm import optparse import sys parser = optparse.OptionParser("") parser.add_option("--tree", help="Print builds for a specific tree.", type=str) parser.add_option("--last", help="Print last builds.", action="store_true") (opts, args) = parser.parse_args() buildfarm = BuildFarm() if opts.tree: builds = buildfarm.get_tree_builds(opts.tree) elif opts.last: builds = buildfarm.get_last_builds() else: parser.print_usage() sys.exit(1) for build in builds: print build
class BuildFarmTests(BuildFarmTestCase): def setUp(self): super(BuildFarmTests, self).setUp() self.buildfarm = BuildFarm(self.path) self.write_compilers(["cc"]) self.write_hosts({"myhost": "Fedora", "charis": "Debian"}) self.write_trees({"trivial": {"scm": "git", "repo": "git://foo", "branch": "master"}, "other": {"scm": "git", "repo": "other.git", "branch": "HEAD"}}) self.buildfarm.commit() self.x = BuildFarm(self.path) def test_get_new_builds_empty(self): self.assertEquals([], list(self.x.get_new_builds())) def test_get_last_builds_empty(self): self.assertEquals([], list(self.x.get_last_builds())) def test_get_tree_builds_empty(self): self.assertEquals([], list(self.x.get_tree_builds("trival"))) def test_get_tree_builds(self): path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "gcc", stdout_contents="BUILD COMMIT REVISION: 12\n", mtime=1200) path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "cc", stdout_contents="BUILD COMMIT REVISION: 13\n", mtime=1300) path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "cc", stdout_contents="BUILD COMMIT REVISION: 42\n", mtime=4200) builds = list(self.x.get_tree_builds("tdb")) self.assertEquals(["42", "12"], [x.revision for x in builds]) def test_get_last_builds(self): path = self.upload_mock_logfile(self.x.builds, "other", "myhost", "cc", "BUILD COMMIT REVISION: 12\n", mtime=1200) path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc", "BUILD COMMIT REVISION: 13\n", mtime=1300) path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc", "BUILD COMMIT REVISION: 42\n", mtime=4200) builds = list(self.x.get_last_builds()) self.assertEquals(2, len(builds)) self.assertEquals(4200, builds[0].upload_time) self.assertEquals("42", builds[0].revision_details()) self.assertEquals("trivial", builds[0].tree) self.assertEquals(1200, builds[1].upload_time) self.assertEquals("12", builds[1].revision_details()) self.assertEquals("other", builds[1].tree) def test_get_summary_builds_empty(self): self.assertEquals([], list(self.x.get_summary_builds())) def test_get_summary_builds(self): path = self.upload_mock_logfile(self.x.builds, "other", "myhost", "cc", "BUILD COMMIT REVISION: 12\n", mtime=1200) path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc", "BUILD COMMIT REVISION: 13\n", mtime=1300) path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc", "BUILD COMMIT REVISION: 42\n", mtime=4200) builds = list(self.x.get_summary_builds()) self.assertEquals(2, len(builds)) self.assertEquals("other", builds[0][0]) self.assertEquals("trivial", builds[1][0]) builds = list(self.x.get_summary_builds(min_age=4000)) self.assertEquals(1, len(builds)) builds = list(self.x.get_summary_builds(min_age=5000)) self.assertEquals(0, len(builds)) def test_get_host_builds_empty(self): self.assertEquals([], list(self.x.get_host_builds("myhost"))) def test_lcov_status_none(self): self.assertRaises(NoSuchBuildError, self.x.lcov_status, "trivial") def test_tree(self): self.assertEquals("trivial", self.x.trees["trivial"].name) tree = self.x.trees["trivial"] self.assertEquals("git", tree.scm) self.assertEquals("git://foo", tree.repo) self.assertEquals("master", tree.branch) def test_get_build_rev(self): path = self.upload_mock_logfile(self.x.builds, "tdb", "charis", "cc", stdout_contents="tHIS is what a log file looks like.\n" "BUILD COMMIT REVISION: 12\n") build = self.x.get_build("tdb", "charis", "cc", "12") self.assertEquals("tdb", build.tree) self.assertEquals("charis", build.host) self.assertEquals("cc", build.compiler) self.assertEquals("12", build.revision) def test_get_build_no_rev(self): path = self.create_mock_logfile("tdb", "charis", "cc", contents="This is what a log file looks like.") build = self.x.get_build("tdb", "charis", "cc") self.assertEquals("tdb", build.tree) self.assertEquals("charis", build.host) self.assertEquals("cc", build.compiler) self.assertIs(None, build.revision)
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from buildfarm.build import ( build_status_from_logs, LogFileMissing, MissingRevisionInfo, NoTestOutput, revision_from_log, extract_test_output, ) from buildfarm.hostdb import NoSuchHost from buildfarm import BuildFarm, StormBuild buildfarm = BuildFarm() store = buildfarm._get_store() for build in store.find(StormBuild, StormBuild.status_str == None): try: log = build.read_log() except LogFileMissing: print "Killing build %r without status string or log." % build log.remove() continue try: err = build.read_err() try: status = build_status_from_logs(log, err) finally:
import sys sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from buildfarm.build import ( build_status_from_logs, LogFileMissing, MissingRevisionInfo, NoTestOutput, revision_from_log, extract_test_output, ) from buildfarm.hostdb import NoSuchHost from buildfarm import BuildFarm, StormBuild buildfarm = BuildFarm() store = buildfarm._get_store() for build in store.find(StormBuild, StormBuild.status_str == None): try: log = build.read_log() except LogFileMissing: print "Killing build %r without status string or log." % build log.remove() continue try: err = build.read_err() try: status = build_status_from_logs(log, err) finally: