def testShouldTheBuildsTimes(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] atime = datetime.strptime("20091011000000", "%Y%m%d%H%M%S") values, min, max, max_time = builds.build_times() self.assertEquals(3, len(values)) self.assertEquals (util.datetimeutils.cctimestamp_to_unix_timestamp("20091011173900"), min) self.assertEquals (util.datetimeutils.cctimestamp_to_unix_timestamp("20091017220324"), max) self.assertEquals (60, max_time)
def test_should_group_the_commitors_based_on_(self): builds = Builds() builds.builds = [self.failed, self.did_not_fix, self.fixed_it, self.another_pass] grouped_commitors = builds.build_breakers() commitor = grouped_commitors.find('xkf') self.assertEquals(2, commitor.passed_count()) self.assertEquals(1, commitor.failed_count()) commitor = grouped_commitors.find('khu') self.assertEquals(0, commitor.passed_count()) self.assertEquals(1, commitor.failed_count())
def generate(request) : configs = Configs() if (configs.is_empty()) : return render_to_response('analyse/hint.html', Context({}), context_instance = RequestContext(request)) config = configs.find(request.POST['id']) over_all_result = {} Builds.create_builds(config, None, config.builds()) Build.analyse_all(config.id, over_all_result) Builds.create_csv(config.id) return redirect('index.html')
def testShouldGroupTheBuilds(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] grouped_builds = builds.group_by_each_day() self.assertEquals(2, len(grouped_builds)) atime = datetime.strptime("20091011000000", "%Y%m%d%H%M%S") btime = datetime.strptime("20091017000000", "%Y%m%d%H%M%S") self.assertEquals(2, len(grouped_builds[atime].builds)) btime = datetime.strptime("20091017000000", "%Y%m%d%H%M%S") self.assertEquals(1, len(grouped_builds[btime].builds))
def testShouldCalculateTheBuildPerDay(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] values, labels, max_time = builds.per_build_time() self.assertEquals("#1C9E05", values[0]["colour"]) self.assertEquals("#1C9E05", values[1]["colour"]) self.assertEquals("#FF368D", values[2]["colour"]) self.assertEquals(60, values[0]["top"]) self.assertEquals(2, values[1]["top"]) self.assertEquals(4, values[2]["top"]) self.assertEquals("2009-10-11 17:39:22", labels[0]) self.assertEquals("2009-10-11 17:39:00", labels[1]) self.assertEquals("2009-10-17 22:03:24", labels[2]) self.assertEquals(60, max_time)
def testShouldCalculateTheBuildPerDay(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] values, labels, max_time = builds.per_build_time() self.assertEquals('#1C9E05', values[0]['colour']); self.assertEquals('#1C9E05', values[1]['colour']); self.assertEquals('#FF368D', values[2]['colour']); self.assertEquals(60, values[0]['top']); self.assertEquals(2, values[1]['top']); self.assertEquals(4, values[2]['top']); self.assertEquals('2009-10-11 17:39:22', labels[0]) self.assertEquals('2009-10-11 17:39:00', labels[1]) self.assertEquals('2009-10-17 22:03:24', labels[2]) self.assertEquals(60, max_time);
def testShouldFilterThe5Files(self): self.ccroot = self.root + '/analyse/tests/fixtures/cclive-release-jdk1.5' files = Builds.filter(self.ccroot, 5) self.assertEquals(5, len(files)) self.assertEquals('log20080923021338.xml', files[0]) self.assertEquals('log20080923232508.xml', files[1]) self.assertEquals('log20080924001513.xml', files[2]) self.assertEquals('log20080924052506.xml', files[3]) self.assertEquals('log20080924062941.xml', files[4])
def testGenerateTotalPassRate(self): builds = Builds.create_builds(TestUtils().connectfour_config(), None,SuccessfulRateChartTests.PATTERN); ndaysStat = TopNStatistics('connectfour4', builds) json_str = ndaysStat.successful_rate() json_obj = cjson.decode(json_str) self.assertEqual(2, len(json_obj['elements'][0]['values']));
def testShouldSelectValuesFromFiles(self) : values = Builds.select_values_from(TestUtils().cclive_config(), None,2) self.assertEquals(2, len(values)) self.assertEquals('cclive-release-jdk1.5', values[0][0]) self.assertEquals('build.6', values[0][1]) self.assertEquals('6 minutes 28 seconds', values[0][2]) self.assertEquals(None, values[0][3]) self.assertEquals('cclive-release-jdk1.5', values[1][0]) self.assertEquals('build.6', values[1][1]) self.assertEquals('6 minutes 45 seconds', values[1][2]) self.assertEquals(None, values[1][3])
def test_should_calculate_pass_count(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed_at_oct_11] self.assertEquals(2, builds.pass_count())
def test_should_calculate_pass_rate_by_day(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed_at_oct_11] n_days_summary = builds.get_n_days_summary() self.assertEquals('67.0', str(n_days_summary.pass_rate_values()[0]['y']))
def test_should_passed_runs_by_day(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed_at_oct_11] n_days_summary = builds.get_n_days_summary(); self.assertEquals(1, n_days_summary.failed_runs_values()[0].get('y'))
def testToParseAllTheLogs(self): self.assertEqual(2, len(Builds.create_builds(TestUtils().connectfour_config(), BuildFactoryTest.PATTERN, 2)))
def testShouldOnlyKeep2digitAfterPoint(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.failed] self.assertEquals('0.33', str(builds.avg_runs()));
def testShouldCalcateAvgRunsPerDay(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] self.assertEquals('1.5', builds.avg_runs());
def testShouldOnlyParseThe5Builds(self) : configs = Configs() builds = Builds.create_builds(TestUtils().cclive_config(), None,2) self.assertEquals(2, len(builds)) self.assertEquals(datetime(2008, 9, 24, 5, 25, 6), builds[0].start_time) self.assertEquals(datetime(2008, 9, 24, 6, 29, 41), builds[1].start_time)
def testShouldFilter1Files(self): self.ccroot = self.root + '/analyse/tests/fixtures/cclive-release-jdk1.5' files = Builds.filter(self.ccroot, 1) self.assertEquals(1, len(files)) self.assertEquals('log20080924062941.xml', files[0])
def testShouldNotThrowExceptionWhenProcessingXmlFile(self): try: builds = Builds.create_builds(TestUtils().cclive_config(), "log20080624064201Lbuild.70.xml", 2) except Exception, e: self.fail('should not throw any exception at all')
def testShouldParseAndPersit(self): self.assertEqual(0, len(Build.objects.all())) builds = Builds.create_builds(TestUtils().connectfour_config(), BuildFactoryTest.PATTERN, 2); self.assertEqual(2, len(Build.objects.all()))
def testToParseTheInformationCorrectly(self): builds = Builds.create_builds(TestUtils().connectfour_config(), BuildFactoryTest.PATTERN, 2); self.assertEqual('connectfour4', builds[0].name)
def test_should_calculate_avg_build_time(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed_at_oct_11] self.assertEquals('40.67', builds.avg_build_time())
def test_should_return_zero_as_avg_build_time_if_no_builds(self): builds = Builds() self.assertEquals('0', builds.avg_build_time())
def testGenerateTotalBuilds(self): Builds.create_builds(TestUtils().connectfour_config(), None, BuildTotalPassPercentageTest.PATTERN); self.assertEqual(2, Build.total('connectfour4'));
def testShouldCalcateAvgRunsPerDay(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.passed_at_oct_11, self.passed_at_oct_11] self.assertEquals('3.00', builds.avg_runs());
def test_should_return_zero_if_no_passed_build(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11] n_days_summary = builds.get_n_days_summary(); self.assertEquals(0, n_days_summary.failed_runs_values()[0].get('y'))
def testShouldCalculateThePassRate(self): builds = Builds() builds.builds = [self.passed_at_oct_11, self.another_passed_at_oct_11, self.failed] atime = datetime.strptime("20091011000000", "%Y%m%d%H%M%S") self.assertEquals(1, builds.group_by_each_day()[atime].pass_rate())
def test_should_return_zero_passed_build_if_no_builds(self): builds = Builds() n_days_summary = builds.get_n_days_summary(); self.assertEquals(0, len(n_days_summary.failed_runs_values()))