donate-cpu: Add GetCppcheckVersions command

This commit is contained in:
Daniel Marjamäki 2018-11-29 21:19:45 +01:00
parent eae2422653
commit 5532d1f877
2 changed files with 35 additions and 9 deletions

View File

@ -427,6 +427,10 @@ def server(server_address_port, packages, packageIndex, resultPath):
if cmd.startswith('GET /'): if cmd.startswith('GET /'):
newThread = HttpClientThread(connection, cmd, resultPath, latestResults) newThread = HttpClientThread(connection, cmd, resultPath, latestResults)
newThread.start() newThread.start()
elif cmd=='GetCppcheckVersions\n':
print('[' + strDateTime() + '] GetCppcheckVersions: head 1.85')
connection.send('head 1.85')
connection.close()
elif cmd=='get\n': elif cmd=='get\n':
# Get crash package urls.. # Get crash package urls..
if (packageIndex % 500) == 0: if (packageIndex % 500) == 0:

View File

@ -87,6 +87,21 @@ def compile(cppcheckPath, jobs):
return True return True
def getCppcheckVersions():
print('Connecting to server to get Cppcheck versions..')
package = None
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('cppcheck.osuosl.org', 8000)
try:
sock.connect(server_address)
sock.send(b'GetCppcheckVersions\n')
versions = sock.recv(256)
except socket.error:
return ['head', '1.85']
sock.close()
return versions.decode('utf-8').split()
def getPackage(): def getPackage():
print('Connecting to server to get assigned work..') print('Connecting to server to get assigned work..')
package = None package = None
@ -316,12 +331,15 @@ while True:
if not getCppcheck(cppcheckPath): if not getCppcheck(cppcheckPath):
print('Failed to clone Cppcheck, retry later') print('Failed to clone Cppcheck, retry later')
sys.exit(1) sys.exit(1)
if compile_version(workpath, jobs, '1.85') == False: cppcheckVersions = getCppcheckVersions()
print('Failed to compile Cppcheck-1.85, retry later') for ver in cppcheckVersions:
sys.exit(1) if ver == 'head':
if compile(cppcheckPath, jobs) == False: if compile(cppcheckPath, jobs) == False:
print('Failed to compile Cppcheck, retry later') print('Failed to compile Cppcheck, retry later')
sys.exit(1) sys.exit(1)
elif compile_version(workpath, jobs, ver) == False:
print('Failed to compile Cppcheck-{}, retry later'.format(ver))
sys.exit(1)
if packageUrl: if packageUrl:
package = packageUrl package = packageUrl
else: else:
@ -336,7 +354,11 @@ while True:
count = '' count = ''
elapsedTime = '' elapsedTime = ''
resultsToDiff = [] resultsToDiff = []
for cppcheck in ['cppcheck/cppcheck', '1.85/cppcheck']: for ver in cppcheckVersions:
if ver == 'head':
cppcheck = 'cppcheck/cppcheck'
else:
cppcheck = ver + '/cppcheck'
c,errout,t = scanPackage(workpath, cppcheck, jobs) c,errout,t = scanPackage(workpath, cppcheck, jobs)
if c < 0: if c < 0:
crash = True crash = True
@ -348,11 +370,11 @@ while True:
if not crash and len(resultsToDiff[0]) + len(resultsToDiff[1]) == 0: if not crash and len(resultsToDiff[0]) + len(resultsToDiff[1]) == 0:
print('No results') print('No results')
continue continue
output = 'cppcheck: head 1.85\n' output = 'cppcheck: ' + ' '.join(cppcheckVersions) + '\n'
output += 'count:' + count + '\n' output += 'count:' + count + '\n'
output += 'elapsed-time:' + elapsedTime + '\n' output += 'elapsed-time:' + elapsedTime + '\n'
if not crash: if not crash:
output += 'diff:\n' + diffResults(workpath, 'head', resultsToDiff[0], '1.85', resultsToDiff[1]) + '\n' output += 'diff:\n' + diffResults(workpath, cppcheckVersions[0], resultsToDiff[0], cppcheckVersions[1], resultsToDiff[1]) + '\n'
if packageUrl: if packageUrl:
print('=========================================================') print('=========================================================')
print(output) print(output)