Example #1
0
 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)
Example #2
0
 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
Example #3
0
# 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:]
Example #4
0
# 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"
Example #5
0
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
Example #7
0
# 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
Example #8
0
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)
Example #9
0
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:
Example #10
0
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: