| from sys import argv |
| import os |
| import subprocess |
| import time |
| |
| APK_DIR = '${ANDROID_PRODUCT_OUT}/system/app/AttestationTestTool/AttestationTestTool.apk' |
| FAILURE_TAG = 'AttestationFail' |
| FAILURE_PREFIX = 'Failure: ' |
| FINISHED_TAG = 'AttestationFinished' |
| INFO_TAG = 'AttestationFailInfo' |
| INFO_PREFIX = ' ' * len(FAILURE_PREFIX) |
| devnull = open(os.devnull, 'wb') |
| |
| # Clear logcat |
| subprocess.call('adb logcat -c', shell=True, stdout=devnull) |
| subprocess.call('adb install -r ' + APK_DIR, shell=True, stdout=devnull) |
| subprocess.call('adb shell am start -a android.intent.action.MAIN -n com.google.attestationexample/.AttestationActivity', |
| shell=True, stdout=devnull) |
| finished = False |
| read_retry = 0 |
| failures = 0 |
| while not finished and read_retry < 5: |
| time.sleep(1) |
| logcat = subprocess.check_output(['adb', 'logcat', '-d'], stderr=subprocess.STDOUT) |
| for line in logcat.split('\n'): |
| if INFO_TAG in line: |
| print INFO_PREFIX + line[line.index('AttestationFailInfo') + len('AttestationFailInfo:'):] |
| elif FAILURE_TAG in line: |
| failures += 1 |
| print FAILURE_PREFIX + line[line.index('AttestationFail') + len('AttestationFail:'):] |
| elif FINISHED_TAG in line and not finished: |
| print 'Finished. Failures: ' + str(failures) |
| finished = True |
| break |
| read_retry += 1 |
| if read_retry is 5: |
| print 'Attestation test did not complete, check logcat to determine the source of the error' |
| subprocess.call('adb uninstall com.google.attestationexample', shell=True, stdout=devnull) |