Exemplo n.º 1
0
    def test_updateBuilderInfo(self):
        yield self.insertTestData([
            fakedb.Builder(id=7, name='some:builder7'),
            fakedb.Builder(id=8, name='some:builder8'),
        ])

        yield self.db.builders.updateBuilderInfo(
            7, 'a string which describe the builder', ['cat1', 'cat2'])
        yield self.db.builders.updateBuilderInfo(
            8, 'a string which describe the builder', [])
        builderdict7 = yield self.db.builders.getBuilder(7)
        validation.verifyDbDict(self, 'builderdict', builderdict7)
        builderdict7['tags'].sort()  # order is unspecified
        self.assertEqual(
            builderdict7,
            dict(id=7,
                 name='some:builder7',
                 tags=['cat1', 'cat2'],
                 masterids=[],
                 description='a string which describe the builder'))
        builderdict8 = yield self.db.builders.getBuilder(8)
        validation.verifyDbDict(self, 'builderdict', builderdict8)
        self.assertEqual(
            builderdict8,
            dict(id=8,
                 name='some:builder8',
                 tags=[],
                 masterids=[],
                 description='a string which describe the builder'))
Exemplo n.º 2
0
    def insert_buildrequest_new(self, insert_patch=False, **kwargs):
        self.db = self.master.db
        self.db.insertTestData([
            fakedb.Master(id=92),
            fakedb.Worker(id=13, name='wrk'),
            fakedb.Builder(id=79, name='Builder0'),
            fakedb.Builder(id=80, name='Builder1'),
            fakedb.Buildset(id=98, results=None, reason="testReason1",
                            parent_buildid=None),
            fakedb.BuildRequest(id=11, buildsetid=98, builderid=79)
        ])

        patchid = 99 if insert_patch else None

        self.db.insertTestData([
            fakedb.BuildsetSourceStamp(buildsetid=98, sourcestampid=234),
            fakedb.SourceStamp(
                id=234,
                branch=self.reporter_test_branch,
                project=self.reporter_test_project,
                revision=self.reporter_test_revision,
                repository=self.reporter_test_repo,
                codebase=self.reporter_test_codebase,
                patchid=patchid),
            fakedb.Patch(id=99, patch_base64='aGVsbG8sIHdvcmxk',
                         patch_author='him@foo', patch_comment='foo', subdir='/foo',
                         patchlevel=3)
        ])
        request = yield self.master.data.get(("buildrequests", 11))
        return request
Exemplo n.º 3
0
    def setUp(self):
        self.setUpTestReactor()
        self.setUpBuilderMixin()

        # a collection of rows that would otherwise clutter up every test
        master_id = fakedb.FakeBuildRequestsComponent.MASTER_ID
        self.base_rows = [
            fakedb.SourceStamp(id=21),
            fakedb.Buildset(id=11, reason='because'),
            fakedb.BuildsetSourceStamp(buildsetid=11, sourcestampid=21),
            fakedb.Builder(id=77, name='bldr1'),
            fakedb.Builder(id=78, name='bldr2'),
            fakedb.Builder(id=182, name='foo@bar'),
            fakedb.BuildRequest(id=111, submitted_at=1000,
                                builderid=77, buildsetid=11),
            fakedb.BuildRequest(id=222, submitted_at=2000,
                                builderid=77, buildsetid=11),
            fakedb.BuildRequestClaim(brid=222, masterid=master_id,
                                     claimed_at=2001),
            fakedb.BuildRequest(id=333, submitted_at=3000,
                                builderid=77, buildsetid=11),
            fakedb.BuildRequest(id=444, submitted_at=2500,
                                builderid=78, buildsetid=11),
            fakedb.BuildRequestClaim(brid=444, masterid=master_id,
                                     claimed_at=2501),
            fakedb.BuildRequest(id=555, submitted_at=2800,
                                builderid=182, buildsetid=11),
        ]
        yield self.db.insertTestData(self.base_rows)
Exemplo n.º 4
0
 def test_getBuilders_masterid(self):
     yield self.insertTestData([
         fakedb.Builder(id=7, name='some:builder'),
         fakedb.Builder(id=8, name='other:builder'),
         fakedb.Builder(id=9, name='third:builder'),
         fakedb.Master(id=3, name='m1'),
         fakedb.Master(id=4, name='m2'),
         fakedb.BuilderMaster(builderid=7, masterid=3),
         fakedb.BuilderMaster(builderid=8, masterid=3),
         fakedb.BuilderMaster(builderid=8, masterid=4),
     ])
     builderlist = yield self.db.builders.getBuilders(masterid=3)
     for builderdict in builderlist:
         validation.verifyDbDict(self, 'builderdict', builderdict)
     self.assertEqual(
         sorted(builderlist, key=builderKey),
         sorted([
             dict(id=7,
                  name='some:builder',
                  masterids=[3],
                  tags=[],
                  description=None),
             dict(id=8,
                  name='other:builder',
                  masterids=[3, 4],
                  tags=[],
                  description=None),
         ],
                key=builderKey))
Exemplo n.º 5
0
    def test_addBuildsetForSourceStamp_list_of_renderable_builderNames(self):
        names = ['a', 'b', properties.Interpolate('%(prop:extra_builder)s')]
        sched = self.makeScheduler(name='n', builderNames=names)

        self.master.db.insertTestData([
            fakedb.Builder(id=1, name='a'),
            fakedb.Builder(id=2, name='b'),
            fakedb.Builder(id=3, name='c'),
            fakedb.SourceStamp(id=98, branch='stable'),
            fakedb.Change(changeid=25, sourcestampid=98, branch='stable'),
            fakedb.ChangeProperty(changeid=25,
                                  property_name='extra_builder',
                                  property_value='["c","Change"]'),
        ])

        bsid, brids = yield sched.addBuildsetForSourceStamps(reason='whynot',
                                                             waited_for=False,
                                                             sourcestamps=[98])
        self.assertEqual((bsid, brids), self.exp_bsid_brids)
        self.master.data.updates.addBuildset.assert_called_with(
            waited_for=False,
            builderids=[1, 2, 3],
            external_idstring=None,
            properties={
                'scheduler': ('n', 'Scheduler'),
                'extra_builder': ('c', 'Change')
            },
            reason='whynot',
            scheduler='n',
            sourcestamps=[98])
Exemplo n.º 6
0
 def setUp(self):
     self.setUpEndpoint()
     return self.db.insertTestData([
         fakedb.Builder(id=1, name='buildera'),
         fakedb.Builder(id=2, name='builderb'),
         fakedb.Master(id=13),
         fakedb.BuilderMaster(id=1, builderid=2, masterid=13),
     ])
Exemplo n.º 7
0
    def setUpTests(self):
        self.now = 9272359
        self.reactor.advance(self.now)

        # set up a sourcestamp with id 234 for use below
        return self.insertTestData([
            fakedb.SourceStamp(id=234),
            fakedb.Builder(id=1, name='bldr1'),
            fakedb.Builder(id=2, name='bldr2'),
        ])
Exemplo n.º 8
0
 def setUp(self):
     self.setUpEndpoint()
     self.master.name = "myname"
     self.db.insertTestData([
         fakedb.Master(id=13, name='some:master', active=False,
                       last_active=SOMETIME),
         fakedb.Master(id=14, name='other:master', active=False,
                       last_active=SOMETIME),
         fakedb.Builder(id=23, name='bldr1'),
         fakedb.BuilderMaster(builderid=23, masterid=13),
         fakedb.Builder(id=24, name='bldr2'),
     ])
Exemplo n.º 9
0
 def setUp(self):
     self.setUpEndpoint()
     self.db.insertTestData([
         fakedb.Builder(id=77, name='builder77'),
         fakedb.Master(id=88),
         fakedb.Worker(id=13, name='wrk'),
         fakedb.Buildset(id=8822),
         fakedb.BuildRequest(id=82, buildsetid=8822, builderid=77),
         fakedb.Build(id=13,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=3),
         fakedb.Build(id=14,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=4),
         fakedb.Build(id=15,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=5),
     ])
Exemplo n.º 10
0
 def setUp(self):
     self.setUpEndpoint()
     self.db.insertTestData([
         fakedb.Builder(id=77, name='builder77'),
         fakedb.Master(id=88),
         fakedb.Worker(id=13, name='wrk'),
         fakedb.Buildset(id=8822),
         fakedb.BuildRequest(id=82, buildsetid=8822, builderid=77),
         fakedb.Build(id=13,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=3),
         fakedb.Build(id=14,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=4),
         fakedb.Build(id=15,
                      builderid=77,
                      masterid=88,
                      workerid=13,
                      buildrequestid=82,
                      number=5),
         fakedb.BuildProperty(buildid=13,
                              name='reason',
                              value='"force build"',
                              source="Force Build Form"),
     ])
Exemplo n.º 11
0
    def test_source_stamp_no_props_nightly_scheduler(self):
        # no status updates are expected

        self.master.db.insertTestData([
            fakedb.Master(id=92),
            fakedb.Worker(id=13, name='wrk'),
            fakedb.Builder(id=79, name='Builder0'),
            fakedb.Buildset(id=98, results=SUCCESS, reason="test_reason1"),
            fakedb.BuildsetSourceStamp(buildsetid=98, sourcestampid=234),
            fakedb.SourceStamp(id=234, project=None, branch=None, revision=None,
                               repository=None, codebase=None),
            fakedb.BuildRequest(id=11, buildsetid=98, builderid=79),
            fakedb.Build(id=20, number=0, builderid=79, buildrequestid=11,
                         workerid=13, masterid=92, results=SUCCESS, state_string="build_text"),
            fakedb.BuildProperty(buildid=20, name="workername", value="wrk"),
            fakedb.BuildProperty(buildid=20, name="reason", value="because"),
            fakedb.BuildProperty(buildid=20, name="buildername", value="Builder0"),
            fakedb.BuildProperty(buildid=20, name="branch", value=None),
            fakedb.BuildProperty(buildid=20, name="codebase", value=""),
            fakedb.BuildProperty(buildid=20, name="project", value=""),
            fakedb.BuildProperty(buildid=20, name="repository", value=""),
            fakedb.BuildProperty(buildid=20, name="revision", value=None),
        ])

        self.setup_fake_get_changes_for_build(has_change=False)

        build = yield self.master.data.get(("builds", 20))

        build['complete'] = False
        yield self.sp._got_event(('builds', 20, 'new'), build)
        build['complete'] = True
        yield self.sp._got_event(('builds', 20, 'finished'), build)
        build['results'] = SUCCESS
        yield self.sp._got_event(('builds', 20, 'finished'), build)
Exemplo n.º 12
0
    def test_getBuildsForChange_OneCodebase(self):
        rows = [fakedb.Master(id=88, name="bar"),
                fakedb.Worker(id=13, name='one'),
                fakedb.Builder(id=77, name='A'),
                fakedb.SourceStamp(id=234, created_at=CREATED_AT,
                                   revision="aaa"),
                fakedb.Change(changeid=14, codebase='A', sourcestampid=234),
                fakedb.Buildset(id=30, reason='foo',
                                submitted_at=1300305712, results=1),
                fakedb.BuildsetSourceStamp(sourcestampid=234, buildsetid=30),
                fakedb.BuildRequest(id=19, buildsetid=30, builderid=77,
                                    priority=13, submitted_at=1300305712, results=1,
                                    complete=0, complete_at=None),
                fakedb.Build(id=50, buildrequestid=19, number=5, masterid=88,
                             builderid=77, state_string="test", workerid=13,
                             started_at=1304262222, results=1), ]

        expected = [{
            'id': 50,
            'number': 5,
            'builderid': 77,
            'buildrequestid': 19,
            'workerid': 13,
            'masterid': 88,
            'started_at': epoch2datetime(1304262222),
            'complete_at': None,
            'state_string': 'test',
            'results': 1}]

        return self.do_test_getBuildsForChange(rows, 14, expected)
Exemplo n.º 13
0
    def setupDb(self, results1, results2):

        self.db = self.master.db
        self.db.insertTestData([
            fakedb.Master(id=92),
            fakedb.Worker(id=13, name='wrkr'),
            fakedb.Buildset(id=98, results=results1, reason="testReason1"),
            fakedb.Buildset(id=99, results=results2, reason="testReason2"),
            fakedb.Builder(id=80, name='Builder1'),
            fakedb.BuildRequest(id=11, buildsetid=98, builderid=80),
            fakedb.BuildRequest(id=12, buildsetid=99, builderid=80),
            fakedb.Build(id=20,
                         number=0,
                         builderid=80,
                         buildrequestid=11,
                         workerid=13,
                         masterid=92,
                         results=results1),
            fakedb.Build(id=21,
                         number=1,
                         builderid=80,
                         buildrequestid=12,
                         workerid=13,
                         masterid=92,
                         results=results2),
        ])
        for _id in (20, 21):
            self.db.insertTestData([
                fakedb.BuildProperty(buildid=_id,
                                     name="workername",
                                     value="wrkr"),
                fakedb.BuildProperty(buildid=_id,
                                     name="reason",
                                     value="because"),
            ])
Exemplo n.º 14
0
    def test_getSourceStampsForBuild_OneCodeBase(self):
        rows = [fakedb.Master(id=88, name="bar"),
                fakedb.Worker(id=13, name='one'),
                fakedb.Builder(id=77, name='A'),
                fakedb.SourceStamp(id=234, codebase='A', created_at=CREATED_AT,
                                   revision="aaa"),
                # fakedb.Change(changeid=14, codebase='A', sourcestampid=234),
                fakedb.Buildset(id=30, reason='foo',
                                submitted_at=1300305712, results=-1),
                fakedb.BuildsetSourceStamp(sourcestampid=234, buildsetid=30),
                fakedb.BuildRequest(id=19, buildsetid=30, builderid=77,
                                    priority=13, submitted_at=1300305712, results=-1),
                fakedb.Build(id=50, buildrequestid=19, number=5, masterid=88,
                             builderid=77, state_string="test", workerid=13,
                             started_at=1304262222), ]

        expected = [{
            'branch': 'master',
            'codebase': 'A',
            'created_at': epoch2datetime(CREATED_AT),
            'patch_author': None,
            'patch_body': None,
            'patch_comment': None,
            'patch_level': None,
            'patch_subdir': None,
            'patchid': None,
            'project': 'proj',
            'repository': 'repo',
            'revision': 'aaa',
            'ssid': 234}]

        return self.do_test_getSourceStampsForBuild(rows, 50, expected)
Exemplo n.º 15
0
 def setUp(self):
     self.setUpEndpoint()
     self.db.insertTestData([
         fakedb.Worker(id=47, name='linux'),
         fakedb.Buildset(id=20),
         fakedb.Builder(id=88, name='b1'),
         fakedb.BuildRequest(id=41, buildsetid=20, builderid=88),
         fakedb.Master(id=88),
         fakedb.Build(id=30,
                      buildrequestid=41,
                      number=7,
                      masterid=88,
                      builderid=88,
                      workerid=47),
         fakedb.Step(id=131, number=132, name='step132', buildid=30),
         fakedb.TestResultSet(id=13,
                              builderid=88,
                              buildid=30,
                              stepid=131,
                              description='desc',
                              category='cat',
                              value_unit='ms',
                              complete=1),
         fakedb.TestResultSet(id=14,
                              builderid=88,
                              buildid=30,
                              stepid=131,
                              description='desc',
                              category='cat',
                              value_unit='ms',
                              complete=1),
     ])
Exemplo n.º 16
0
    def makeScheduler(self,
                      name='testsched',
                      builderNames=None,
                      properties=None,
                      codebases=None):
        if builderNames is None:
            builderNames = ['a', 'b']
        if properties is None:
            properties = {}
        if codebases is None:
            codebases = {'': {}}

        if isinstance(builderNames, list):
            dbBuilder = []
            builderid = 0
            for builderName in builderNames:
                builderid += 1
                dbBuilder.append(fakedb.Builder(id=builderid,
                                                name=builderName))

            self.master.db.insertTestData(dbBuilder)

        sched = self.attachScheduler(
            base.BaseScheduler(name=name,
                               builderNames=builderNames,
                               properties=properties,
                               codebases=codebases), self.OBJECTID,
            self.SCHEDULERID)
        self.master.data.updates.addBuildset = mock.Mock(
            name='data.addBuildset',
            side_effect=lambda *args, **kwargs: defer.succeed(self.
                                                              exp_bsid_brids))

        return sched
Exemplo n.º 17
0
 def test_no_workerforbuilders(self):
     rows = [
         fakedb.Builder(id=78, name='bldr'),
         fakedb.BuildRequest(id=11, buildsetid=10, builderid=78),
     ]
     yield self.do_test_maybeStartBuildsOnBuilder(rows=rows,
                                                  exp_claims=[], exp_builds=[])
    def setUp(self):
        self.setUpTestReactor()
        self.botmaster = mock.Mock(name='botmaster')
        self.botmaster.builders = {}
        self.builders = {}

        def prioritizeBuilders(master, builders):
            # simple sort-by-name by default
            return sorted(builders, key=lambda b1: b1.name)
        self.master = self.botmaster.master = \
            fakemaster.make_master(self, wantData=True, wantDb=True)
        self.master.caches = fakemaster.FakeCaches()
        self.master.config.prioritizeBuilders = prioritizeBuilders
        self.brd = buildrequestdistributor.BuildRequestDistributor(
            self.botmaster)
        self.brd.parent = self.botmaster
        self.brd.startService()

        # a collection of rows that would otherwise clutter up every test
        self.base_rows = [
            fakedb.SourceStamp(id=21),
            fakedb.Builder(id=77, name='A'),
            fakedb.Buildset(id=11, reason='because'),
            fakedb.BuildsetSourceStamp(sourcestampid=21, buildsetid=11),
        ]
Exemplo n.º 19
0
    def createBuilder(self, name, builderid=None, builder_config=None):
        if builderid is None:
            b = fakedb.Builder(name=name)
            yield self.master.db.insertTestData([b])
            builderid = b.id

        bldr = mock.Mock(name=name)
        bldr.name = name
        self.botmaster.builders[name] = bldr
        self.builders[name] = bldr

        def maybeStartBuild(worker, builds):
            self.startedBuilds.append((worker.name, builds))
            d = defer.Deferred()
            self.reactor.callLater(0, d.callback, True)
            return d
        bldr.maybeStartBuild = maybeStartBuild
        bldr.getCollapseRequestsFn = lambda: False

        bldr.workers = []
        bldr.getAvailableWorkers = lambda: [
            w for w in bldr.workers if w.isAvailable()]
        bldr.getBuilderId = lambda: (builderid)
        if builder_config is None:
            bldr.config.nextWorker = None
            bldr.config.nextBuild = None
        else:
            bldr.config = builder_config

        def canStartBuild(*args):
            can = bldr.config.canStartBuild
            return not can or can(*args)
        bldr.canStartBuild = canStartBuild

        return bldr
Exemplo n.º 20
0
    def test_addBuildsetForSourceStamp_renderable_builderNames(self):
        @properties.renderer
        def names(props):
            if props.changes[0]['branch'] == 'stable':
                return ['c']
            elif props.changes[0]['branch'] == 'unstable':
                return ['a', 'b']

        sched = self.makeScheduler(name='n', builderNames=names)

        self.master.db.insertTestData([
            fakedb.Builder(id=1, name='a'),
            fakedb.Builder(id=2, name='b'),
            fakedb.Builder(id=3, name='c'),
            fakedb.SourceStamp(id=98, branch='stable'),
            fakedb.SourceStamp(id=99, branch='unstable'),
            fakedb.Change(changeid=25, sourcestampid=98, branch='stable'),
            fakedb.Change(changeid=26, sourcestampid=99, branch='unstable'),
        ])

        bsid, brids = yield sched.addBuildsetForSourceStamps(reason='whynot',
                                                             waited_for=False,
                                                             sourcestamps=[98])
        self.assertEqual((bsid, brids), self.exp_bsid_brids)
        self.master.data.updates.addBuildset.assert_called_with(
            waited_for=False,
            builderids=[3],
            external_idstring=None,
            properties={
                'scheduler': ('n', 'Scheduler')},
            reason='whynot',
            scheduler='n',
            sourcestamps=[98])

        bsid, brids = yield sched.addBuildsetForSourceStamps(reason='because',
                                                             waited_for=False,
                                                             sourcestamps=[99])
        self.assertEqual((bsid, brids), self.exp_bsid_brids)
        self.master.data.updates.addBuildset.assert_called_with(
            waited_for=False,
            builderids=[1, 2],
            external_idstring=None,
            properties={
                'scheduler': ('n', 'Scheduler')},
            reason='because',
            scheduler='n',
            sourcestamps=[99])
Exemplo n.º 21
0
    def test_multiple_source_stamps_no_props(self):
        repository = 'http://test_repo'
        project = 'test_user/test_project'
        codebase1 = 'test_codebase1'
        codebase2 = 'test_codebase2'
        codebase3 = 'test_codebase3'
        branch2 = 'refs/pull/4192/merge'
        branch3 = 'refs/pull/4193/merge'

        self._http.expect(
            'post',
            '/repos/test_user/test_project/issues/4192/comments',
            json={'body': 'Build done.'})
        self._http.expect(
            'post',
            '/repos/test_user/test_project/issues/4192/comments',
            json={'body': 'Build done.'})
        self._http.expect(
            'post',
            '/repos/test_user/test_project/issues/4192/comments',
            json={'body': 'Build done.'})
        self._http.expect(
            'post',
            '/repos/test_user/test_project/issues/4192/comments',
            json={'body': 'Build done.'})

        # note that the first sourcestamp only has revision, second only branch and only the third
        # has both
        self.master.db.insertTestData([
            fakedb.Master(id=92),
            fakedb.Worker(id=13, name='wrk'),
            fakedb.Builder(id=79, name='Builder0'),
            fakedb.Buildset(id=98, results=SUCCESS, reason="test_reason1"),
            fakedb.BuildsetSourceStamp(buildsetid=98, sourcestampid=234),
            fakedb.BuildsetSourceStamp(buildsetid=98, sourcestampid=235),
            fakedb.BuildsetSourceStamp(buildsetid=98, sourcestampid=236),
            fakedb.SourceStamp(id=234, project=project, branch=None, revision='rev1',
                               repository=repository, codebase=codebase1),
            fakedb.SourceStamp(id=235, project=project, branch=branch2, revision=None,
                               repository=repository, codebase=codebase2),
            fakedb.SourceStamp(id=236, project=project, branch=branch3, revision='rev3',
                               repository=repository, codebase=codebase3),
            fakedb.BuildRequest(id=11, buildsetid=98, builderid=79),
            fakedb.Build(id=20, number=0, builderid=79, buildrequestid=11,
                         workerid=13, masterid=92, results=SUCCESS, state_string="build_text"),
            fakedb.BuildProperty(buildid=20, name="buildername", value="Builder0"),
            fakedb.BuildProperty(buildid=20, name="branch", value=branch2),
        ])

        self.setup_fake_get_changes_for_build(has_change=False)

        build = yield self.master.data.get(("builds", 20))

        build['complete'] = False
        yield self.sp._got_event(('builds', 20, 'new'), build)
        build['complete'] = True
        yield self.sp._got_event(('builds', 20, 'finished'), build)
        build['results'] = SUCCESS
        yield self.sp._got_event(('builds', 20, 'finished'), build)
Exemplo n.º 22
0
 def insert_test_data(self):
     self.master.db.insertTestData([
         fakedb.Master(id=92),
         fakedb.Worker(id=13, name='wrk'),
         fakedb.Builder(id=100, name='builder1'),
         fakedb.Builder(id=101, name='builder2'),
         fakedb.Builder(id=102, name='builder3'),
         fakedb.Buildset(id=200, results=None, reason="reason98"),
         fakedb.BuildsetSourceStamp(buildsetid=200, sourcestampid=300),
         fakedb.SourceStamp(id=300,
                            revision='revision1',
                            project='project1',
                            codebase='codebase1',
                            repository='repository1',
                            branch='branch1'),
         fakedb.BuildRequest(id=400, buildsetid=200, builderid=100),
         fakedb.BuildRequestClaim(brid=400, masterid=92, claimed_at=1),
         fakedb.Build(id=500,
                      number=1,
                      builderid=100,
                      buildrequestid=400,
                      workerid=13,
                      masterid=92,
                      results=None,
                      state_string="state1"),
         fakedb.BuildRequest(id=401, buildsetid=200, builderid=101),
         fakedb.BuildRequestClaim(brid=401, masterid=92, claimed_at=1),
         fakedb.Build(id=501,
                      number=1,
                      builderid=101,
                      buildrequestid=401,
                      workerid=13,
                      masterid=92,
                      results=None,
                      state_string="state2"),
         fakedb.BuildRequest(id=402, buildsetid=200, builderid=102),
         fakedb.BuildRequestClaim(brid=402, masterid=92, claimed_at=1),
         fakedb.Build(id=502,
                      number=1,
                      builderid=102,
                      buildrequestid=402,
                      workerid=13,
                      masterid=92,
                      results=None,
                      state_string="state3"),
     ])
Exemplo n.º 23
0
    def setUpTests(self):
        # set up a sourcestamp and buildset for use below
        self.MASTER_ID = fakedb.FakeBuildRequestsComponent.MASTER_ID
        self.OTHER_MASTER_ID = self.MASTER_ID + 1111
        self.db.master.masterid = self.MASTER_ID

        return self.insertTestData([
            fakedb.SourceStamp(id=234),
            fakedb.Master(id=self.MASTER_ID, name="fake master"),
            fakedb.Master(id=self.OTHER_MASTER_ID, name="other"),
            fakedb.Buildset(id=self.BSID),
            fakedb.Builder(id=self.BLDRID1, name="builder1"),
            fakedb.Builder(id=self.BLDRID2, name="builder2"),
            fakedb.Builder(id=self.BLDRID3, name="builder3"),
            fakedb.BuildsetSourceStamp(buildsetid=self.BSID,
                                       sourcestampid=234),
        ])
Exemplo n.º 24
0
 def setUp(self):
     self.setUpEndpoint()
     return self.db.insertTestData([
         fakedb.Builder(id=1, name='buildera'),
         fakedb.Builder(id=2, name='builderb'),
         fakedb.Builder(id=3, name='builderTagA'),
         fakedb.Builder(id=4, name='builderTagB'),
         fakedb.Builder(id=5, name='builderTagAB'),
         fakedb.Tag(id=3, name="tagA"),
         fakedb.Tag(id=4, name="tagB"),
         fakedb.BuildersTags(builderid=3, tagid=3),
         fakedb.BuildersTags(builderid=4, tagid=4),
         fakedb.BuildersTags(builderid=5, tagid=3),
         fakedb.BuildersTags(builderid=5, tagid=4),
         fakedb.Master(id=13),
         fakedb.BuilderMaster(id=1, builderid=2, masterid=13),
     ])
Exemplo n.º 25
0
    def test_canBeCollapsed_different_codebases_raises_error(self):
        """ This testcase has two buildrequests
            Request Change Codebase   Revision Comment
            ----------------------------------------------------------------------
            288     17     C          1800     request 1 has repo not in request 2
            289     18     D          2100     request 2 has repo not in request 1
            --------------------------------
            Merge cannot be performed and raises error:
              Merging requests requires both requests to have the same codebases
        """
        brDicts = []  # list of buildrequests dictionary
        master = fakemaster.make_master(self, wantData=True, wantDb=True)
        master.db.insertTestData([
            fakedb.Builder(id=77, name='bldr'),
            fakedb.SourceStamp(id=238,
                               branch='trunk',
                               revision='1800',
                               repository='svn://c..',
                               codebase='C',
                               project='world-domination'),
            fakedb.Change(changeid=17,
                          branch='trunk',
                          revision='1800',
                          repository='svn://c..',
                          codebase='C',
                          project='world-domination',
                          sourcestampid=238),
            fakedb.SourceStamp(id=239,
                               branch='trunk',
                               revision='2100',
                               repository='svn://d..',
                               codebase='D',
                               project='world-domination'),
            fakedb.Change(changeid=18,
                          branch='trunk',
                          revision='2100',
                          repository='svn://d..',
                          codebase='D',
                          project='world-domination',
                          sourcestampid=239),
            fakedb.Buildset(id=539, reason='triggered'),
            fakedb.BuildsetSourceStamp(buildsetid=539, sourcestampid=238),
            fakedb.BuildRequest(id=288, buildsetid=539, builderid=77),
            fakedb.Buildset(id=540, reason='triggered'),
            fakedb.BuildsetSourceStamp(buildsetid=540, sourcestampid=239),
            fakedb.BuildRequest(id=289, buildsetid=540, builderid=77),
        ])
        # use getBuildRequest to minimize the risk from changes to the format
        # of the brdict
        req = yield master.db.buildrequests.getBuildRequest(288)
        brDicts.append(req)
        req = yield master.db.buildrequests.getBuildRequest(289)
        brDicts.append(req)
        can_collapse = \
            yield buildrequest.BuildRequest.canBeCollapsed(master, brDicts[0],
                                                           brDicts[1])

        self.assertEqual(can_collapse, False)
Exemplo n.º 26
0
    def test_fromBrdict_multiple_sourcestamps(self):
        master = fakemaster.make_master(self, wantData=True, wantDb=True)
        master.db.insertTestData([
            fakedb.Builder(id=77, name='bldr'),
            fakedb.SourceStamp(id=234,
                               branch='trunk',
                               revision='9283',
                               repository='svn://a..',
                               codebase='A',
                               project='world-domination'),
            fakedb.Change(changeid=13,
                          branch='trunk',
                          revision='9283',
                          repository='svn://a..',
                          codebase='A',
                          project='world-domination',
                          sourcestampid=234),
            fakedb.SourceStamp(id=235,
                               branch='trunk',
                               revision='9284',
                               repository='svn://b..',
                               codebase='B',
                               project='world-domination'),
            fakedb.Change(changeid=14,
                          branch='trunk',
                          revision='9284',
                          repository='svn://b..',
                          codebase='B',
                          project='world-domination',
                          sourcestampid=235),
            fakedb.Buildset(id=539, reason='triggered'),
            fakedb.BuildsetSourceStamp(buildsetid=539, sourcestampid=234),
            fakedb.BuildsetProperty(buildsetid=539,
                                    property_name='x',
                                    property_value='[1, "X"]'),
            fakedb.BuildsetProperty(buildsetid=539,
                                    property_name='y',
                                    property_value='[2, "Y"]'),
            fakedb.BuildRequest(id=288,
                                buildsetid=539,
                                builderid=77,
                                priority=13,
                                submitted_at=1200000000),
        ])
        # use getBuildRequest to minimize the risk from changes to the format
        # of the brdict
        brdict = yield master.db.buildrequests.getBuildRequest(288)
        br = yield buildrequest.BuildRequest.fromBrdict(master, brdict)

        self.assertEqual(br.reason, 'triggered')

        self.assertEqual(br.properties.getProperty('x'), 1)
        self.assertEqual(br.properties.getProperty('y'), 2)
        self.assertEqual(br.submittedAt, 1200000000)
        self.assertEqual(br.buildername, 'bldr')
        self.assertEqual(br.priority, 13)
        self.assertEqual(br.id, 288)
        self.assertEqual(br.bsid, 539)
Exemplo n.º 27
0
 def setUp(self):
     self.setUpEndpoint()
     self.db.insertTestData([
         fakedb.Builder(id=77, name='bbb'),
         fakedb.Builder(id=78, name='ccc'),
         fakedb.Builder(id=79, name='ddd'),
         fakedb.Master(id=fakedb.FakeBuildRequestsComponent.MASTER_ID),
         fakedb.Worker(id=13, name='wrk'),
         fakedb.Buildset(id=8822),
         fakedb.BuildRequest(id=44,
                             buildsetid=8822,
                             builderid=77,
                             priority=7,
                             submitted_at=self.SUBMITTED_AT_EPOCH,
                             waited_for=1),
         fakedb.BuildRequest(id=45, buildsetid=8822, builderid=77),
         fakedb.BuildRequest(id=46, buildsetid=8822, builderid=78),
     ])
Exemplo n.º 28
0
 def test_getBuilder_no_masters(self):
     yield self.insertTestData([
         fakedb.Builder(id=7, name='some:builder'),
     ])
     builderdict = yield self.db.builders.getBuilder(7)
     validation.verifyDbDict(self, 'builderdict', builderdict)
     self.assertEqual(builderdict,
                      dict(id=7, name='some:builder', tags=[],
                           masterids=[], description=None))
Exemplo n.º 29
0
 def setUp(self):
     self.setup_test_reactor()
     self.master = fakemaster.make_master(self,
                                          wantMq=True,
                                          wantDb=True,
                                          wantData=True)
     self.rtype = buildsets.Buildset(self.master)
     return self.master.db.insertTestData([
         fakedb.SourceStamp(id=234,
                            branch='br',
                            codebase='cb',
                            project='pr',
                            repository='rep',
                            revision='rev',
                            created_at=89834834),
         fakedb.Builder(id=42, name='bldr1'),
         fakedb.Builder(id=43, name='bldr2'),
     ])
Exemplo n.º 30
0
    def makeScheduler(self, overrideBuildsetMethods=False, **kwargs):
        self.master.db.insertTestData([fakedb.Builder(id=77, name='b')])

        sched = self.attachScheduler(
            triggerable.Triggerable(name='n', builderNames=['b'], **kwargs),
            self.OBJECTID, self.SCHEDULERID,
            overrideBuildsetMethods=overrideBuildsetMethods)

        return sched