forked from Ecosystem-Infra/ecosystem-infra-rotation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwptsync.py
55 lines (43 loc) · 1.43 KB
/
wptsync.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import mechanicalsoup
BASE_URL = 'https://ci.chromium.org'
IMPORT_URL = BASE_URL + '/p/infra/builders/luci.infra.cron/wpt-importer?limit=50'
EXPORT_URL = BASE_URL + '/p/infra/builders/luci.infra.cron/wpt-exporter?limit=50'
def scrape_buildbot(url):
browser = mechanicalsoup.StatefulBrowser()
browser.open(url)
rows = browser.get_current_page().select('div.main table.info tr')
builds = []
recent_failures = 0
last_success = None
# Skip the table header.
for row in rows[1:]:
columns = row.select('td')
time = columns[0].get_text().strip()
# columns[1] is end time
duration = columns[2].get_text().strip()
# columns[3] is commit
result = columns[4].get_text().strip()
build = BASE_URL + columns[5].a['href']
info = columns[6].get_text().strip()
if result == 'SUCCESS':
last_success = last_success or time
else:
if not last_success:
recent_failures += 1
builds.append({
'time': time,
'duration': duration,
'result': result,
'build': build,
'info': info
})
result = {
'last_success': last_success,
'recent_failures': recent_failures,
'builds': builds,
}
return result
def import_status():
return scrape_buildbot(IMPORT_URL)
def export_status():
return scrape_buildbot(EXPORT_URL)