コード例 #1
0
    def test_filter_tags_by_codebases_simple_unstable(self):
        tags = ['Unstable', 'Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
        codebases = {'unity': 'trunk/'}
        expected_tags = ['ABV', 'Unstable']

        filtered_tags = base.filter_tags_by_codebases(tags, codebases,
                                                      self.tag_as_branch_regex,
                                                      self.regex_branches)

        self.assertEqual(expected_tags, filtered_tags)
コード例 #2
0
    def test_filter_tags_by_codebases_unity_cb(self):
        tags = [
            'Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2',
            '2018.2-QV'
        ]
        codebases = {'unity': 'foo/'}  # unity, wrong pattern
        expected_tags = ['ABV', 'Unstable']  # use Trunk tags

        filtered_tags = base.filter_tags_by_codebases(tags, codebases,
                                                      self.tag_as_branch_regex,
                                                      self.regex_branches)

        self.assertEqual(expected_tags, filtered_tags)
コード例 #3
0
    def test_filter_tags_by_codebases_uknown_branch(self):
        tags = [
            'Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2',
            '2018.2-QV'
        ]
        codebases = {'foo': '2019.2/'}  # not unity, good pattern
        expected_tags = ['ABV', 'Unstable']  # use Trunk tags

        filtered_tags = base.filter_tags_by_codebases(tags, codebases,
                                                      self.tag_as_branch_regex,
                                                      self.regex_branches)

        self.assertEqual(expected_tags, filtered_tags)
コード例 #4
0
    def test_filter_tags_by_codebases_empty_cb(self):
        tags = [
            'Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2',
            '2018.2-QV'
        ]
        codebases = {}
        expected_tags = sorted(tags)

        filtered_tags = base.filter_tags_by_codebases(tags, codebases,
                                                      self.tag_as_branch_regex,
                                                      self.regex_branches)

        self.assertEqual(expected_tags, filtered_tags)
コード例 #5
0
    def test_filter_tags_by_codebases_wrong_cb_and_branch(self):
        tags = [
            'Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2',
            '2018.2-QV'
        ]
        codebases = {'foo': 'bar/'}  # not unity, wrong pattern
        expected_tags = sorted(tags)  # return original tags

        filtered_tags = base.filter_tags_by_codebases(tags, codebases,
                                                      self.tag_as_branch_regex,
                                                      self.regex_branches)

        self.assertEqual(expected_tags, filtered_tags)
コード例 #6
0
ファイル: builder.py プロジェクト: IbnNafis007/katana
    def content(self, req, cxt):
        b = self.builder_status
        master = self.getBuildmaster(req)

        # Grab all the parameters which are prefixed with 'property.'.
        # We'll use these to filter the builds and build requests we
        # show below.
        props = {}
        prop_prefix = 'property.'
        for arg, val in req.args.iteritems():
            if arg.startswith(prop_prefix):
                props[arg[len(prop_prefix):]] = val[0]
        def prop_match(oprops):
            for key, val in props.iteritems():
                if key not in oprops or val != str(oprops[key]):
                    return False
            return True

        project = cxt['selectedproject'] = b.getProject()
        cxt['name'] = b.getName()
        cxt['friendly_name'] = b.getFriendlyName()

        cxt['description'] = b.getDescription()
        req.setHeader('Cache-Control', 'no-cache')

        codebases = {}
        getCodebasesArg(request=req, codebases=codebases)

        num_builds = int(req.args.get('numbuilds', [self.numbuilds])[0])

        cxt['builder_url'] = path_to_builder(req, b, codebases=True)
        cxt['path_to_codebases'] = path_to_codebases(req, project)
        cxt['path_to_builders'] = path_to_builders(req, project)
        cxt['builder_name'] = b.getName()

        cxt['rt_update'] = req.args

        filters = {
            "project": self.builder_status.project,
            "builderName": b.getName(),
            "sources": codebases
        }

        project_params = {
            "build_steps": ["0"],
            "build_props": ["0"]
        }

        project_json = SingleProjectBuilderJsonResource(self.status, self.builder_status, latest_rev=True)
        project_dict = yield project_json.asDict(req, params=project_params)
        url = self.status.getBuildbotURL() + path_to_json_project_builder(req, project, self.builder_status.name)
        filtered_tags = filter_tags_by_codebases(project_dict['tags'],
                                                 codebases,
                                                 master.config.tag_as_branch_regex,
                                                 master.config.regex_branches)
        cxt['instant_json']['project'] = {"url": url,
                                          "data": json.dumps(project_dict, separators=(',', ':')),
                                          "tags": filtered_tags,
                                          "waitForPush": self.status.master.config.autobahn_push,
                                          "pushFilters": {
                                              "buildStarted": filters,
                                              "buildFinished": filters,
                                              "stepStarted": filters,
                                              "stepFinished": filters,
                                          }}

        pending_json = SinglePendingBuildsJsonResource(self.status, self.builder_status)
        pending_dict = yield pending_json.asDict(req)
        pending_url = self.status.getBuildbotURL() + path_to_json_pending(req, self.builder_status.name)
        cxt['instant_json']['pending_builds'] = {"url": pending_url,
                                                 "data": json.dumps(pending_dict, separators=(',', ':')),
                                                 "waitForPush": self.status.master.config.autobahn_push,
                                                 "pushFilters": {
                                                     "buildStarted": filters,
                                                     "requestSubmitted": filters,
                                                     "requestCancelled": filters,
                                                 }}

        builds_params = {
            "steps": ["0"],
        }

        builds_json = PastBuildsJsonResource(self.status, num_builds,  builder_status=self.builder_status)
        builds_dict = yield builds_json.asDict(req, params=builds_params)
        builds_url = self.status.getBuildbotURL() + path_to_json_past_builds(req, self.builder_status.name,
                                                                             num_builds, filter_data=True)
        cxt['instant_json']['builds'] = {"url": builds_url,
                                         "data": json.dumps(builds_dict, separators=(',', ':')),
                                         "waitForPush": self.status.master.config.autobahn_push,
                                         "pushFilters": {
                                             "buildFinished": filters
                                         }}

        slave_params = {
            "build_steps": ["0"],
            "build_props": ["0"],
            "builders": ["0"]
        }
        slaves = b.getSlaves()
        slaves_array = [SlaveJsonResource(self.status, ss).asDict(req, params=slave_params)
                        for ss in slaves]
        slaves_dict = FilterOut(slaves_array)
        url = self.status.getBuildbotURL() + path_to_json_builder_slaves(self.builder_status.getName())
        cxt['instant_json']["slaves"] = self.getSlavesJsonResource(filters, url, slaves_dict)

        startslaves = BuilderStartSlavesJsonResources(self.status, self.builder_status)
        startslaves_dict = yield startslaves.asDict(req)
        url = self.status.getBuildbotURL() + \
              path_to_json_builder_startslaves(self.builder_status.getName()) + "?filter=1"
        cxt['instant_json']["start_slaves"] = self.getSlavesJsonResource(filters, url, startslaves_dict)

        cxt['numbuilds'] = int(req.args.get('numbuilds', [self.numbuilds])[0])

        buildForceContext(cxt, req, self.getBuildmaster(req), b.getName())
        template = req.site.buildbot_service.templates.get_template("builder.html")
        defer.returnValue(template.render(**cxt))