Skip to content

Commit 265a505

Browse files
authored
donate-cpu-server.py: greatly simplified and optimized stale report and added days query parameter to it (#6367)
1 parent 1de6af8 commit 265a505

1 file changed

Lines changed: 29 additions & 21 deletions

File tree

tools/donate-cpu-server.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
# Version scheme (MAJOR.MINOR.PATCH) should orientate on "Semantic Versioning" https://semver.org/
2727
# Every change in this script should result in increasing the version number accordingly (exceptions may be cosmetic
2828
# changes)
29-
SERVER_VERSION = "1.3.52"
29+
SERVER_VERSION = "1.3.53"
3030

3131
OLD_VERSION = '2.14.0'
3232

@@ -76,6 +76,10 @@ def dateTimeFromStr(datestr: str) -> datetime.datetime:
7676
return datetime.datetime.strptime(datestr, '%Y-%m-%d %H:%M')
7777

7878

79+
def pkg_from_file(filename: str) -> str:
80+
return filename[filename.rfind('/')+1:]
81+
82+
7983
def overviewReport() -> str:
8084
html = '<!DOCTYPE html>\n'
8185
html += '<html><head><title>daca@home</title></head><body>\n'
@@ -164,7 +168,7 @@ def latestReport(latestResults: list) -> str:
164168
for filename in latestResults:
165169
if not os.path.isfile(filename):
166170
continue
167-
package = filename[filename.rfind('/')+1:]
171+
package = pkg_from_file(filename)
168172
current_year = datetime.date.today().year
169173

170174
datestr = None
@@ -226,7 +230,7 @@ def crashReport(results_path: str, query_params: dict):
226230
elif line.startswith('count:'):
227231
if line.find('Crash') < 0:
228232
break
229-
package = filename[filename.rfind('/')+1:]
233+
package = pkg_from_file(filename)
230234
counts = line.split(' ')
231235
c_version = ''
232236
if counts[2] == 'Crash!':
@@ -325,7 +329,7 @@ def timeoutReport(results_path: str) -> str:
325329
elif line.startswith('count:'):
326330
if line.find('TO!') < 0:
327331
break
328-
package = filename[filename.rfind('/')+1:]
332+
package = pkg_from_file(filename)
329333
counts = line.split(' ')
330334
c2 = ''
331335
if counts[2] == 'TO!':
@@ -341,29 +345,33 @@ def timeoutReport(results_path: str) -> str:
341345
return html
342346

343347

344-
def staleReport(results_path: str) -> str:
348+
def staleReport(results_path: str, query_params: dict) -> str:
349+
thresh_d = query_params.get('days')
350+
if thresh_d is None:
351+
thresh_d = 30
352+
else:
353+
thresh_d = int(thresh_d)
354+
345355
html = '<!DOCTYPE html>\n'
346356
html += '<html><head><title>Stale report</title></head><body>\n'
347357
html += '<h1>Stale report</h1>\n'
348358
html += '<pre>\n'
349359
html += '<b>' + fmt('Package', 'Date Time', link=False) + '</b>\n'
350-
current_year = datetime.date.today().year
351360
for filename in sorted(glob.glob(os.path.expanduser(results_path + '/*'))):
352-
if not os.path.isfile(filename) or filename.endswith('.diff'):
361+
if filename.endswith('.diff') or not os.path.isfile(filename):
353362
continue
354-
for line in open(filename, 'rt'):
355-
line = line.strip()
356-
if line.startswith(str(current_year) + '-') or line.startswith(str(current_year - 1) + '-'):
357-
datestr = line
358-
else:
359-
continue
360-
dt = dateTimeFromStr(datestr)
361-
diff = datetime.datetime.now() - dt
362-
if diff.days < 30:
363-
continue
364-
package = filename[filename.rfind('/')+1:]
365-
html += fmt(package, datestr) + '\n'
366-
break
363+
with open(filename, 'rt') as f:
364+
# first line is datetime string
365+
datestr = f.readline().strip()
366+
try:
367+
dt = dateTimeFromStr(datestr)
368+
diff = datetime.datetime.now() - dt
369+
except:
370+
# there might be very outdated files which still might have an invalid timestamp
371+
diff = datetime.timedelta(days=thresh_d)
372+
if diff.days >= thresh_d:
373+
package = pkg_from_file(filename)
374+
html += fmt(package, datestr) + '\n'
367375
html += '</pre>\n'
368376

369377
html += '</body></html>\n'
@@ -1121,7 +1129,7 @@ def run(self):
11211129
html = timeoutReport(self.resultPath)
11221130
httpGetResponse(self.connection, html, 'text/html')
11231131
elif url == '/stale.html':
1124-
html = staleReport(self.resultPath)
1132+
html = staleReport(self.resultPath, queryParams)
11251133
httpGetResponse(self.connection, html, 'text/html')
11261134
elif url == '/diff.html':
11271135
html = diffReport(self.resultPath)

0 commit comments

Comments
 (0)