7

理由もなく定期的に失敗するテストがいくつかあります。主に JUnit のタイムアウトです。各テストが失敗した回数を取得できるかどうかを知りたいです。これにより、特定のテストに問題があるのか​​、それともトリッキーなテストに関連していないのか、そのサーバー上の Jenkins の安定性に問題があるのか​​ を確認できます。

4

1 に答える 1

2

私は同じ問題に遭遇し、最後の N ビルドで失敗したテストを取得できる python を作成しました。

# -*- coding: utf-8 -*-
#! /usr/bin/python
import urllib
import re
import sys

project = "HERE_THE_PROJECT_NAME"
jenkin_host = "http://path.to.your.jenkins/jenkins/job/%s" % project

last_build = int(re.search("%s #(\d+)" % project, urllib.urlopen(jenkin_host + "/rssAll").read()).group(1))

start_build = last_build
nb_build = 200

REG_EXP = """All Failed Tests(.*)All Tests"""
FAILURE_REG_EXP = """javascript:hideStackTrace\(([^<]*)\)"""

all_failures = {}
last_seen = {}

print "Loading %s builds starting from build number %s" % (nb_build, start_build)

build_ok = 0

for build_id in range(start_build - nb_build, start_build + 1):
    test_page = jenkin_host + "/%s/testReport/" % build_id
    sys.stdout.write(".")
    sys.stdout.flush()
    failures = set()
    for line in urllib.urlopen(test_page).readlines():
        line_piece = re.search(REG_EXP, line)
        if line_piece:
            piece = line_piece.group(1)
            match = re.search(FAILURE_REG_EXP, piece)
            while (match):
                failures.add(match.group(1))
                match = re.search(FAILURE_REG_EXP, piece[match.start():match.end()])
    if not failures:
        build_ok += 1
    for failure in failures:
        all_failures[failure] = all_failures.get(failure, 0) + 1
        last_seen[failure] = build_id
print
print "Done (found %s build OK)" % build_ok

nbs = [ x for x in list(set(all_failures.values())) if x > 1]
nbs.sort(reverse=True)

for i in nbs:
    for test, nb in all_failures.iteritems():
        if nb == i :
            print "%d : %s (last seen : %s)" % (nb, test, last_seen[test])

そして私は得る:

Loading 200 builds starting from build number 11032
.........................................................................................................................................................................................................
Done (found 148 build OK)
8 : 'one failing test' (last seen : 10906)
7 : 'another-failing-test' (last seen : 11019)
于 2012-11-16T16:07:16.370 に答える