Ejemplo n.º 1
0
class SquadTest(unittest.TestCase):
    def setUp(self):
        self.squad = Squad()

    def test_groups(self):
        groups = self.squad.groups()
        self.assertTrue(True, len(groups))

    def test_not_found_groups(self):
        groups = self.squad.groups(name__startswith='no group with this name')
        self.assertEqual(0, len(groups))

    def test_groups_with_count(self):
        all_groups = self.squad.groups(count=ALL)
        self.assertEqual(2, len(all_groups))

        one_groups = self.squad.groups(count=1)
        self.assertEqual(1, len(one_groups))

    def test_not_found_group(self):
        not_found_group = self.squad.group('this-group-does-not-really-exist')
        self.assertEqual(None, not_found_group)

    def test_group(self):
        group = self.squad.group('my_group')
        self.assertTrue(group is not None)

    def test_projects(self):
        projects = self.squad.projects()
        self.assertTrue(True, len(projects))

    def test_builds(self):
        builds = self.squad.builds()
        self.assertTrue(True, len(builds))

    def test_testjobs(self):
        testjobs = self.squad.testjobs()
        self.assertTrue(True, len(testjobs))

    def test_testruns(self):
        testruns = self.squad.testruns()
        self.assertTrue(True, len(testruns))

    def test_tests(self):
        tests = self.squad.tests()
        self.assertTrue(True, len(tests))

    def test_suites(self):
        suites = self.squad.suites()
        self.assertTrue(True, len(suites))

    def test_environments(self):
        environments = self.squad.environments()
        self.assertTrue(True, len(environments))

    def test_backends(self):
        backends = self.squad.backends()
        self.assertTrue(True, len(backends))

    def test_emailtemplates(self):
        emailtemplates = self.squad.emailtemplates()
        self.assertTrue(True, len(emailtemplates))

    def test_knownissues(self):
        knownissues = self.squad.knownissues()
        self.assertTrue(True, len(knownissues))

    def test_suitemetadata(self):
        suitemetadata = self.squad.suitemetadata()
        self.assertTrue(True, len(suitemetadata))

    def test_annotations(self):
        annotations = self.squad.annotations()
        self.assertTrue(True, len(annotations))

    def test_metricthresholds(self):
        metricthresholds = self.squad.metricthresholds()
        self.assertTrue(True, len(metricthresholds))

    def test_reports(self):
        reports = self.squad.reports()
        self.assertTrue(True, len(reports))
Ejemplo n.º 2
0
def main(args):
    # Some configuration, might get parameterized later
    group_slug = args.get('group', None)
    suite_slug = args.get('suite', None)
    SquadApi.configure(args.get('squadapi_url', None))
    number_of_builds = args.get('number', None)
    squad = Squad()
    getid = lambda s: int(re.search('\d+', s).group())

    # First we need to know which projects from the selected group
    # contain the specified suite.
    print('Fetching projects that contain "%s" suites for "%s" group' %
          (suite_slug, group_slug),
          flush=True)
    suites = squad.suites(slug=suite_slug, project__group__slug=group_slug)
    projects_ids = list(
        set([str(getid(suite.project)) for suite in suites.values()]))
    projects = squad.projects(id__in=','.join(projects_ids),
                              ordering='slug').values()

    # Env/arch cache
    environments = set()

    # Table will be layed out like below
    # table = {
    #     'kernelA': {
    #         'buildA': {
    #             'summary': {
    #                 'envA': {'pass': 1, 'fail': 2, 'skip': 3},
    #                 'envB': {'pass': 1, 'fail': 2, 'skip': 3},
    #             }
    #             'envA': [
    #                 {'kunit/test1': 'pass'}
    #                 {'kunit/test2': 'fail'}
    #             ]
    #         },
    #     }
    # }
    table = {}

    if number_of_builds == "0":
        for project in projects:
            print('- %s' % project.slug, flush=True)
        return

    for project in projects:
        print('- %s: fetching %s builds' % (project.slug, number_of_builds),
              flush=True)

        environments = project.environments(count=ALL)

        for build in project.builds(count=int(number_of_builds),
                                    ordering='-id').values():
            print('  - %s: fetching tests' % build.version, flush=True)
            results = {'summary': defaultdict(dict)}

            for test in build.tests(suite__slug=suite_slug).values():

                env = environments[getid(test.environment)].slug

                if test.status not in results['summary'][env]:
                    results['summary'][env][test.status] = 0
                results['summary'][env][test.status] += 1

                if env not in results:
                    results[env] = []
                results[env].append((test.name, test.status))

            if len(results['summary']):
                print('    - summary:', flush=True)
                summary = results.pop('summary')
                for env in sorted(summary.keys()):
                    print('      - %s: %s' % (env, summary[env]), flush=True)

                for env in sorted(results.keys()):
                    print('    - %s:' % env, flush=True)
                    for test in sorted(results[env], key=lambda d: d[0]):
                        print('      - %s: %s' % (test[0], test[1]),
                              flush=True)