Esempio n. 1
0
    def test_update_build_summary(self):
        values1 = [1, 2, 3, 4, 5]
        values2 = [2, 4, 6, 8]
        new_test_run = self.build1.test_runs.create(environment=self.env1)
        new_test_run.metrics.create(name='new_foo', suite=self.suite1, result=5)

        self.receive_testrun(self.build1.version, self.env1.slug, tests_file='{"suite1/new_foo": "pass"}')

        summary1 = BuildSummary.create_or_update(self.build1, self.env1)
        summary2 = BuildSummary.create_or_update(self.build1, self.env2)

        self.assertTrue(summary1.has_metrics)
        self.assertTrue(eq(geomean(values1), summary1.metrics_summary))
        self.assertTrue(summary2.has_metrics)
        self.assertTrue(eq(geomean(values2), summary2.metrics_summary))

        self.assertEqual(5, summary1.tests_total)
        self.assertEqual(2, summary1.tests_pass)
        self.assertEqual(1, summary1.tests_fail)
        self.assertEqual(1, summary1.tests_skip)
        self.assertEqual(1, summary1.tests_xfail)

        self.assertEqual(3, summary2.tests_total)
        self.assertEqual(1, summary2.tests_pass)
        self.assertEqual(1, summary2.tests_fail)
        self.assertEqual(1, summary2.tests_skip)
        self.assertEqual(0, summary2.tests_xfail)
    def handle(self, *args, **options):
        start_date = timezone.make_aware(options['start_date'])
        end_date = timezone.make_aware(options['end_date'])
        project_name = options['project'] or False
        show_progress = options['show_progress']

        builds = Build.objects.filter(
            datetime__range=(start_date, end_date),
            status__finished=True
        )

        project = None
        if project_name:
            slugs = project_name.split('/')
            if len(slugs) != 2:
                logger.error('Project "%s" is malformed (should be group_slug/project_slug). Exiting...' % (project_name))
                return

            try:
                group_slug, project_slug = slugs
                project = Project.objects.get(group__slug=group_slug, slug=project_slug)
            except Project.DoesNotExist:
                logger.error('Project "%s" does not exist. Exiting...' % (project_name))
                return

            logger.info('Filtering builds from project "%s"' % (project_name))
            builds = builds.filter(project=project)

        logger.info('Computing metrics summary for %d builds' % (builds.count()))
        if show_progress:
            logger.info('Showing progress, one dot means one processed build')

        for build in builds.all():
            self.__progress__(show_progress)
            for environment in __get_environments__(build):
                BuildSummary.create_or_update(build, environment)

        if show_progress:
            self.stdout.write("")
            self.stdout._out.flush()
Esempio n. 3
0
    def test_basic_build_summary(self):
        values1 = [1, 2, 3, 4]
        values2 = [2, 4, 6, 8]
        summary1 = BuildSummary.create_or_update(self.build1, self.env1)
        summary2 = BuildSummary.create_or_update(self.build1, self.env2)

        self.assertTrue(summary1.has_metrics)
        self.assertTrue(summary2.has_metrics)
        self.assertTrue(eq(geomean(values1), summary1.metrics_summary))
        self.assertTrue(eq(geomean(values2), summary2.metrics_summary))

        self.assertEqual(4, summary1.tests_total)
        self.assertEqual(1, summary1.tests_pass)
        self.assertEqual(1, summary1.tests_fail)
        self.assertEqual(1, summary1.tests_skip)
        self.assertEqual(1, summary1.tests_xfail)

        self.assertEqual(3, summary2.tests_total)
        self.assertEqual(1, summary2.tests_pass)
        self.assertEqual(1, summary2.tests_fail)
        self.assertEqual(1, summary2.tests_skip)
        self.assertEqual(0, summary2.tests_xfail)
Esempio n. 4
0
 def __call__(testrun):
     BuildSummary.create_or_update(testrun.build, testrun.environment)
Esempio n. 5
0
 def test_build_with_empty_metrics(self):
     summary = BuildSummary.create_or_update(self.build2, self.env1)
     self.assertFalse(summary.has_metrics)