def test_fix_job(self):
        self.r.add_job(name="glibc", version="2.6.1-3", priority='required', dist="sid")
        pkg = Package.selectBy(name="glibc", version="2.6.1-3")[0]
        a = Job.selectBy(package=pkg)[0]
        a.status = JobStatus.BUILDING
        a.host = socket.gethostname()

        self.r.add_job(name="xterm", version="1.2-2", priority='extra', dist="sid")
        pkg = Package.selectBy(name="xterm", version="1.2-2")[0]
        b = Job.selectBy(package=pkg)[0]
        b.status = JobStatus.BUILDING
        b.host = "whoisgonnacallaboxlikethis"

        self.r.add_job(name="iceweasel", version="5.0-2", priority='optional', dist="sid")
        pkg = Package.selectBy(name="iceweasel", version="5.0-2")[0]
        c = Job.selectBy(package=pkg)[0]
        c.status = JobStatus.WAIT_LOCKED
        c.host = socket.gethostname()

        self.assert_(self.r.fix_jobs(False) is True)

        self.assert_(a.status is JobStatus.WAIT)
        self.assert_(a.host is None)
        self.assert_(b.status is JobStatus.BUILDING)
        self.assert_(b.host is "whoisgonnacallaboxlikethis")
        self.assert_(c.status is JobStatus.WAIT)
        self.assert_(c.host is None)
    def test_build_more_recent(self):
        self.r.get_new_jobs()
        RebuilddConfig().set('build', 'build_more_recent', '1')  
        RebuilddConfig().arch.append("alpha")

        self.r.add_job(name="recenter", version="2.6.1-3", priority='required', dist="sid", arch="alpha")
        pkg = Package.selectBy(name="recenter", version="2.6.1-3")[0]
        a = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter", version="1:2.6.1-2", priority='required', dist="sid", arch="alpha")
        pkg = Package.selectBy(name="recenter", version="1:2.6.1-2")[0]
        b = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter", version="3.6.1-4", priority='required', dist="sid", arch="alpha")
        pkg = Package.selectBy(name="recenter", version="3.6.1-4")[0]
        c = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter", version="2.6.0-2", priority='required', dist="sid", arch="any")
        pkg = Package.selectBy(name="recenter", version="2.6.0-2")[0]
        d = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter", version="4.6.0-2", priority='required', dist="sid", arch="any")
        pkg = Package.selectBy(name="recenter", version="4.6.0-2")[0]
        e = Job.selectBy(package=pkg)[0]

        self.assert_(self.r.get_new_jobs() > 0)
        self.assert_(a.status == JobStatus.GIVEUP)
        self.assert_(b.status == JobStatus.WAIT_LOCKED)
        self.assert_(c.status == JobStatus.GIVEUP)
        self.assert_(d.status == JobStatus.GIVEUP)
        self.assert_(e.status == JobStatus.WAIT_LOCKED)

        RebuilddConfig().set('build', 'build_more_recent', '0')  
Example #3
0
    def test_build_more_recent(self):
        self.r.get_new_jobs()
        RebuilddConfig().set('build', 'build_more_recent', '1')
        RebuilddConfig().arch.append("alpha")

        self.r.add_job(name="recenter",
                       version="2.6.1-3",
                       priority='required',
                       dist="sid",
                       arch="alpha")
        pkg = Package.selectBy(name="recenter", version="2.6.1-3")[0]
        a = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter",
                       version="1:2.6.1-2",
                       priority='required',
                       dist="sid",
                       arch="alpha")
        pkg = Package.selectBy(name="recenter", version="1:2.6.1-2")[0]
        b = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter",
                       version="3.6.1-4",
                       priority='required',
                       dist="sid",
                       arch="alpha")
        pkg = Package.selectBy(name="recenter", version="3.6.1-4")[0]
        c = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter",
                       version="2.6.0-2",
                       priority='required',
                       dist="sid",
                       arch="any")
        pkg = Package.selectBy(name="recenter", version="2.6.0-2")[0]
        d = Job.selectBy(package=pkg)[0]

        self.r.add_job(name="recenter",
                       version="4.6.0-2",
                       priority='required',
                       dist="sid",
                       arch="any")
        pkg = Package.selectBy(name="recenter", version="4.6.0-2")[0]
        e = Job.selectBy(package=pkg)[0]

        self.assert_(self.r.get_new_jobs() > 0)
        self.assert_(a.status == JobStatus.GIVEUP)
        self.assert_(b.status == JobStatus.WAIT_LOCKED)
        self.assert_(c.status == JobStatus.GIVEUP)
        self.assert_(d.status == JobStatus.GIVEUP)
        self.assert_(e.status == JobStatus.WAIT_LOCKED)

        RebuilddConfig().set('build', 'build_more_recent', '0')
Example #4
0
def create_db():
    try:
        sqlobject.sqlhub.processConnection = \
            sqlobject.connectionForURI(RebuilddConfig().get('build', 'database_uri'))
        from rebuildd.Package import Package
        from rebuildd.Job import Job
        from rebuildd.RebuilddLog import Log
        Package.createTable()
        Job.createTable()
        Log.createTable()
    except Exception, error:
        print "E: %s" % error
        return 1
 def test_cancel_job(self):
     self.r.add_job(name="glibc", version="2.6-2", priority='required', dist="sid")
     self.r.get_new_jobs()
     pkg = Package.selectBy(name="glibc", version="2.6-2")[0]
     job = Job.selectBy(package=pkg)[0]
     self.assert_(self.r.cancel_job(job.id) is True)
     self.assert_(self.r.cancel_job(42) is False)
Example #6
0
 def test_get_job(self):
     self.r.add_job(name="glibc",
                    version="2.6-3",
                    priority='required',
                    dist="sid")
     pkg = Package.selectBy(name="glibc", version="2.6-3")[0]
     job = Job.selectBy(package=pkg)[0]
     self.assert_(self.r.get_new_jobs() > 0)
     self.assert_(self.r.get_job(job.id) is job)
Example #7
0
 def test_cancel_job(self):
     self.r.add_job(name="glibc",
                    version="2.6-2",
                    priority='required',
                    dist="sid")
     self.r.get_new_jobs()
     pkg = Package.selectBy(name="glibc", version="2.6-2")[0]
     job = Job.selectBy(package=pkg)[0]
     self.assert_(self.r.cancel_job(job.id) is True)
     self.assert_(self.r.cancel_job(42) is False)
def rebuildd_global_test_setup():
        RebuilddConfig(dontparse=True)
        RebuilddConfig().set('log', 'logs_dir', '/tmp')
        RebuilddConfig().set('build', 'database_uri', 'sqlite:///tmp/rebuildd-tests.db')
        RebuilddConfig().set('build', 'max_jobs', '100')
        RebuilddConfig().set('log', 'file', '/dev/null')
        RebuilddConfig().set('log', 'mail_failed', '0')
        RebuilddConfig().set('build', 'build_more_recent', '0') 
        RebuilddConfig().set('log', 'mail_successful', '0')
        RebuilddConfig().arch = ["alpha", "any"]
        Rebuildd()
        try:
            Package.dropTable(ifExists=True)
            Job.dropTable(ifExists=True)
            Log.dropTable(ifExists=True)
            Package.createTable()
            Job.createTable()
            Log.createTable()
        except:
            pass
Example #9
0
def rebuildd_global_test_setup():
    RebuilddConfig(dontparse=True)
    RebuilddConfig().set('log', 'logs_dir', '/tmp')
    RebuilddConfig().set('build', 'database_uri',
                         'sqlite:///tmp/rebuildd-tests.db')
    RebuilddConfig().set('build', 'max_jobs', '100')
    RebuilddConfig().set('log', 'file', '/dev/null')
    RebuilddConfig().set('log', 'mail_failed', '0')
    RebuilddConfig().set('build', 'build_more_recent', '0')
    RebuilddConfig().set('log', 'mail_successful', '0')
    RebuilddConfig().arch = ["alpha", "any"]
    Rebuildd()
    try:
        Package.dropTable(ifExists=True)
        Job.dropTable(ifExists=True)
        Log.dropTable(ifExists=True)
        Package.createTable()
        Job.createTable()
        Log.createTable()
    except:
        pass
Example #10
0
    def test_fix_job(self):
        self.r.add_job(name="glibc",
                       version="2.6.1-3",
                       priority='required',
                       dist="sid")
        pkg = Package.selectBy(name="glibc", version="2.6.1-3")[0]
        a = Job.selectBy(package=pkg)[0]
        a.status = JobStatus.BUILDING
        a.host = socket.gethostname()

        self.r.add_job(name="xterm",
                       version="1.2-2",
                       priority='extra',
                       dist="sid")
        pkg = Package.selectBy(name="xterm", version="1.2-2")[0]
        b = Job.selectBy(package=pkg)[0]
        b.status = JobStatus.BUILDING
        b.host = "whoisgonnacallaboxlikethis"

        self.r.add_job(name="iceweasel",
                       version="5.0-2",
                       priority='optional',
                       dist="sid")
        pkg = Package.selectBy(name="iceweasel", version="5.0-2")[0]
        c = Job.selectBy(package=pkg)[0]
        c.status = JobStatus.WAIT_LOCKED
        c.host = socket.gethostname()

        self.assert_(self.r.fix_jobs(False) is True)

        self.assert_(a.status is JobStatus.WAIT)
        self.assert_(a.host is None)
        self.assert_(b.status is JobStatus.BUILDING)
        self.assert_(b.host is "whoisgonnacallaboxlikethis")
        self.assert_(c.status is JobStatus.WAIT)
        self.assert_(c.host is None)
Example #11
0
 def test_get_job(self):
     self.r.add_job(name="glibc", version="2.6-3", priority='required', dist="sid")
     pkg = Package.selectBy(name="glibc", version="2.6-3")[0]
     job = Job.selectBy(package=pkg)[0]
     self.assert_(self.r.get_new_jobs() > 0)
     self.assert_(self.r.get_job(job.id) is job)
Example #12
0
 def setUp(self):
     rebuildd_global_test_setup()
     self.job = Job(package=Package(name="bash", version="3.1dfsg-8"), arch="alpha", dist="sid")
Example #13
0
class TestJob(unittest.TestCase):

    def setUp(self):
        rebuildd_global_test_setup()
        self.job = Job(package=Package(name="bash", version="3.1dfsg-8"), arch="alpha", dist="sid")

    def tearDown(self):
        rebuildd_global_test_teardown()

    def test_DB_OK(self):
        self.assert_(os.path.isfile('/tmp/rebuildd-tests.db'))
        self.assert_(os.path.getsize('/tmp/rebuildd-tests.db') > 0)

    def test_init_job(self):
        self.assert_(type(self.job) is Job)

    def test_setattr(self):
        self.job.status = JobStatus.UNKNOWN
        self.assert_(self.job.status == JobStatus.UNKNOWN)
        self.job.status = JobStatus.WAIT
        self.assert_(self.job.status == JobStatus.WAIT)

    def test_open_logfile(self):
        file = open(self.job.logfile, "w")
        self.assert_(file is not None)
        filero = open(self.job.logfile, "r")
        self.assert_(filero is not None)
        file.close()
        filero.close()
        os.unlink(file.name)

    def test_status_on_doquit(self):
        self.job.do_quit.set()
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.WAIT_LOCKED)

    def test_build_success(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/true')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.BUILD_OK)

    def test_build_failure_source(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/false')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.SOURCE_FAILED)

    def test_build_failure_build(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/true %s %s %s')
        RebuilddConfig().set('build', 'build_cmd', '/bin/false %s %s %s %s')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true %s %s %s %s')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.BUILD_FAILED)

    def test_build_failure_post_build(self):
        RebuilddConfig().set('build', 'source_cmd', '/bin/true %s %s %s')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true %s %s %s %s')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/false %s %s %s %s')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.POST_BUILD_FAILED)

    def test_send_build_log(self):
        file = open(self.job.logfile, "w")
        self.assert_(file is not None)
        file.write("Fake log file")
        file.close()
        self.assert_(self.job.send_build_log() is False)
        self.job.status = JobStatus.BUILD_OK
        self.assert_(self.job.send_build_log() is True)
        self.assert_(self.job.status is JobStatus.BUILD_OK)
        self.job.status = JobStatus.BUILD_FAILED
        self.assert_(self.job.send_build_log() is True)
        self.assert_(self.job.status is JobStatus.BUILD_FAILED)
Example #14
0
 def setUp(self):
     rebuildd_global_test_setup()
     self.job = Job(package=Package(name="bash", version="3.1dfsg-8"), arch="alpha", dist="sid")
     self.job_dotted_version = Job(package=Package(name="bash", version="1:3.1dfsg-8"), arch="alpha", dist="sid")
Example #15
0
class TestJob(unittest.TestCase):

    def setUp(self):
        rebuildd_global_test_setup()
        self.job = Job(package=Package(name="bash", version="3.1dfsg-8"), arch="alpha", dist="sid")
        self.job_dotted_version = Job(package=Package(name="bash", version="1:3.1dfsg-8"), arch="alpha", dist="sid")

    def tearDown(self):
        rebuildd_global_test_teardown()

    def test_DB_OK(self):
        self.assert_(os.path.isfile('/tmp/rebuildd-tests.db'))
        self.assert_(os.path.getsize('/tmp/rebuildd-tests.db') > 0)

    def test_init_job(self):
        self.assert_(type(self.job) is Job)

    def test_setattr(self):
        self.job.status = JobStatus.UNKNOWN
        self.assert_(self.job.status == JobStatus.UNKNOWN)
        self.job.status = JobStatus.WAIT
        self.assert_(self.job.status == JobStatus.WAIT)

    def test_open_logfile(self):
        file = open(self.job.logfile, "w")
        self.assert_(file is not None)
        filero = open(self.job.logfile, "r")
        self.assert_(filero is not None)
        file.close()
        filero.close()
        os.unlink(file.name)

    def test_status_on_doquit(self):
        self.job.do_quit.set()
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.WAIT_LOCKED)

    def test_build_success(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/true')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.BUILD_OK)

    def test_build_failure_source(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/false')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.SOURCE_FAILED)

    def test_build_failure_build(self):
        self.job.do_quit.clear()
        RebuilddConfig().set('build', 'source_cmd', '/bin/true %s %s %s')
        RebuilddConfig().set('build', 'build_cmd', '/bin/false %s %s %s %s')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true %s %s %s %s')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.BUILD_FAILED)

    def test_build_failure_post_build(self):
        RebuilddConfig().set('build', 'source_cmd', '/bin/true %s %s %s')
        RebuilddConfig().set('build', 'build_cmd', '/bin/true %s %s %s %s')
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/false %s %s %s %s')
        self.job.start()
        self.job.join()
        self.assert_(self.job.status == JobStatus.POST_BUILD_FAILED)

    def test_send_build_log(self):
        file = open(self.job.logfile, "w")
        self.assert_(file is not None)
        file.write("Fake log file")
        file.close()
        self.assert_(self.job.send_build_log() is False)
        self.job.status = JobStatus.BUILD_OK
        self.assert_(self.job.send_build_log() is True)
        self.assert_(self.job.status is JobStatus.BUILD_OK)
        self.job.status = JobStatus.BUILD_FAILED
        self.assert_(self.job.send_build_log() is True)
        self.assert_(self.job.status is JobStatus.BUILD_FAILED)

    def test_get_source_cmd(self):
        RebuilddConfig().set('build', 'source_cmd', '/bin/true $d $a $p $v $j')
        cmd = self.job.get_source_cmd()
        self.assert_(self.job.dist in cmd)
        self.assert_(self.job.package.name in cmd)
        self.assert_(self.job.package.version in cmd)
        self.assert_(str(self.job.id) in cmd)

    def test_get_build_cmd(self):
        RebuilddConfig().set('build', 'build_cmd', '/bin/true $d $a $p $v $j')
        cmd = self.job.get_build_cmd()
        self.assert_(self.job.dist in cmd)
        self.assert_(self.job.arch in cmd)
        self.assert_(self.job.package.name in cmd)
        self.assert_(self.job.package.version in cmd)
        self.assert_(str(self.job.id) in cmd)
        cmd = self.job_dotted_version.get_build_cmd()
        self.assert_(self.job_dotted_version.package.version not in cmd)

    def test_get_post_build_cmd(self):
        RebuilddConfig().set('build', 'post_build_cmd', '')
        cmd = self.job.get_post_build_cmd()
        self.assert_(cmd is None)
        RebuilddConfig().set('build', 'post_build_cmd', '/bin/true $d $a $p $v $j')
        cmd = self.job.get_post_build_cmd()
        self.assert_(self.job.dist in cmd)
        self.assert_(self.job.package.name in cmd)
        self.assert_(self.job.package.version in cmd)
        self.assert_(str(self.job.id) in cmd)