1cb93a386Sopenharmony_ci[ 2cb93a386Sopenharmony_ci { 3cb93a386Sopenharmony_ci "cmd": [ 4cb93a386Sopenharmony_ci "vpython", 5cb93a386Sopenharmony_ci "-u", 6cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 7cb93a386Sopenharmony_ci "--json-output", 8cb93a386Sopenharmony_ci "/path/to/tmp/json", 9cb93a386Sopenharmony_ci "ensure-directory", 10cb93a386Sopenharmony_ci "--mode", 11cb93a386Sopenharmony_ci "0777", 12cb93a386Sopenharmony_ci "[START_DIR]/tmp" 13cb93a386Sopenharmony_ci ], 14cb93a386Sopenharmony_ci "infra_step": true, 15cb93a386Sopenharmony_ci "name": "makedirs tmp_dir" 16cb93a386Sopenharmony_ci }, 17cb93a386Sopenharmony_ci { 18cb93a386Sopenharmony_ci "cmd": [ 19cb93a386Sopenharmony_ci "python", 20cb93a386Sopenharmony_ci "-u", 21cb93a386Sopenharmony_ci "import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n" 22cb93a386Sopenharmony_ci ], 23cb93a386Sopenharmony_ci "name": "get swarming bot id", 24cb93a386Sopenharmony_ci "~followup_annotations": [ 25cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import os@@@", 26cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@", 27cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 28cb93a386Sopenharmony_ci ] 29cb93a386Sopenharmony_ci }, 30cb93a386Sopenharmony_ci { 31cb93a386Sopenharmony_ci "cmd": [ 32cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 33cb93a386Sopenharmony_ci "shell", 34cb93a386Sopenharmony_ci "mkdir", 35cb93a386Sopenharmony_ci "-p", 36cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/resources" 37cb93a386Sopenharmony_ci ], 38cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 39cb93a386Sopenharmony_ci "env": { 40cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 41cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 42cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 43cb93a386Sopenharmony_ci }, 44cb93a386Sopenharmony_ci "infra_step": true, 45cb93a386Sopenharmony_ci "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 46cb93a386Sopenharmony_ci }, 47cb93a386Sopenharmony_ci { 48cb93a386Sopenharmony_ci "cmd": [ 49cb93a386Sopenharmony_ci "python", 50cb93a386Sopenharmony_ci "-u", 51cb93a386Sopenharmony_ci "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\ngov = sys.argv[3]\n\nlog = subprocess.check_output([ADB, 'root'])\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\nsubprocess.check_output([ADB, 'shell', 'echo \"%s\" > '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])\nactual_gov = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()\nif actual_gov != gov:\n raise Exception('(actual, expected) (%s, %s)'\n % (actual_gov, gov))\n", 52cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 53cb93a386Sopenharmony_ci "0", 54cb93a386Sopenharmony_ci "hotplug" 55cb93a386Sopenharmony_ci ], 56cb93a386Sopenharmony_ci "env": { 57cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 58cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 59cb93a386Sopenharmony_ci }, 60cb93a386Sopenharmony_ci "infra_step": true, 61cb93a386Sopenharmony_ci "name": "Set CPU 0's governor to hotplug", 62cb93a386Sopenharmony_ci "timeout": 30, 63cb93a386Sopenharmony_ci "~followup_annotations": [ 64cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 65cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import os@@@", 66cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 67cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 68cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import time@@@", 69cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 70cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 71cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@", 72cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 73cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 74cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 75cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(log)@@@", 76cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 77cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 78cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 79cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 80cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 81cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 82cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 83cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@", 84cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 85cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ % (actual_gov, gov))@@@", 86cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 87cb93a386Sopenharmony_ci ] 88cb93a386Sopenharmony_ci }, 89cb93a386Sopenharmony_ci { 90cb93a386Sopenharmony_ci "cmd": [ 91cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 92cb93a386Sopenharmony_ci "push", 93cb93a386Sopenharmony_ci "[START_DIR]/build/dm", 94cb93a386Sopenharmony_ci "/data/local/tmp/" 95cb93a386Sopenharmony_ci ], 96cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 97cb93a386Sopenharmony_ci "env": { 98cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 99cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 100cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 101cb93a386Sopenharmony_ci }, 102cb93a386Sopenharmony_ci "infra_step": true, 103cb93a386Sopenharmony_ci "name": "push dm" 104cb93a386Sopenharmony_ci }, 105cb93a386Sopenharmony_ci { 106cb93a386Sopenharmony_ci "cmd": [ 107cb93a386Sopenharmony_ci "vpython", 108cb93a386Sopenharmony_ci "-u", 109cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 110cb93a386Sopenharmony_ci "--json-output", 111cb93a386Sopenharmony_ci "/path/to/tmp/json", 112cb93a386Sopenharmony_ci "glob", 113cb93a386Sopenharmony_ci "[START_DIR]/skia/resources", 114cb93a386Sopenharmony_ci "*" 115cb93a386Sopenharmony_ci ], 116cb93a386Sopenharmony_ci "infra_step": true, 117cb93a386Sopenharmony_ci "name": "ls [START_DIR]/skia/resources/*", 118cb93a386Sopenharmony_ci "~followup_annotations": [ 119cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/bar.jpg@@@", 120cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/foo.png@@@", 121cb93a386Sopenharmony_ci "@@@STEP_LOG_END@glob@@@" 122cb93a386Sopenharmony_ci ] 123cb93a386Sopenharmony_ci }, 124cb93a386Sopenharmony_ci { 125cb93a386Sopenharmony_ci "cmd": [ 126cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 127cb93a386Sopenharmony_ci "push", 128cb93a386Sopenharmony_ci "[START_DIR]/skia/resources/bar.jpg", 129cb93a386Sopenharmony_ci "[START_DIR]/skia/resources/foo.png", 130cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/resources" 131cb93a386Sopenharmony_ci ], 132cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 133cb93a386Sopenharmony_ci "env": { 134cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 135cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 136cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 137cb93a386Sopenharmony_ci }, 138cb93a386Sopenharmony_ci "infra_step": true, 139cb93a386Sopenharmony_ci "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" 140cb93a386Sopenharmony_ci }, 141cb93a386Sopenharmony_ci { 142cb93a386Sopenharmony_ci "cmd": [ 143cb93a386Sopenharmony_ci "vpython", 144cb93a386Sopenharmony_ci "-u", 145cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 146cb93a386Sopenharmony_ci "--json-output", 147cb93a386Sopenharmony_ci "/path/to/tmp/json", 148cb93a386Sopenharmony_ci "copy", 149cb93a386Sopenharmony_ci "[START_DIR]/skia/infra/bots/assets/lottie-samples/VERSION", 150cb93a386Sopenharmony_ci "/path/to/tmp/" 151cb93a386Sopenharmony_ci ], 152cb93a386Sopenharmony_ci "infra_step": true, 153cb93a386Sopenharmony_ci "name": "Get lottie-samples VERSION", 154cb93a386Sopenharmony_ci "~followup_annotations": [ 155cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@VERSION@42@@@", 156cb93a386Sopenharmony_ci "@@@STEP_LOG_END@VERSION@@@" 157cb93a386Sopenharmony_ci ] 158cb93a386Sopenharmony_ci }, 159cb93a386Sopenharmony_ci { 160cb93a386Sopenharmony_ci "cmd": [ 161cb93a386Sopenharmony_ci "vpython", 162cb93a386Sopenharmony_ci "-u", 163cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 164cb93a386Sopenharmony_ci "--json-output", 165cb93a386Sopenharmony_ci "/path/to/tmp/json", 166cb93a386Sopenharmony_ci "copy", 167cb93a386Sopenharmony_ci "42", 168cb93a386Sopenharmony_ci "[START_DIR]/tmp/LOTTIE_VERSION" 169cb93a386Sopenharmony_ci ], 170cb93a386Sopenharmony_ci "infra_step": true, 171cb93a386Sopenharmony_ci "name": "write LOTTIE_VERSION", 172cb93a386Sopenharmony_ci "~followup_annotations": [ 173cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@LOTTIE_VERSION@42@@@", 174cb93a386Sopenharmony_ci "@@@STEP_LOG_END@LOTTIE_VERSION@@@" 175cb93a386Sopenharmony_ci ] 176cb93a386Sopenharmony_ci }, 177cb93a386Sopenharmony_ci { 178cb93a386Sopenharmony_ci "cmd": [ 179cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 180cb93a386Sopenharmony_ci "shell", 181cb93a386Sopenharmony_ci "cat", 182cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/LOTTIE_VERSION" 183cb93a386Sopenharmony_ci ], 184cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 185cb93a386Sopenharmony_ci "env": { 186cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 187cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 188cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 189cb93a386Sopenharmony_ci }, 190cb93a386Sopenharmony_ci "infra_step": true, 191cb93a386Sopenharmony_ci "name": "read /sdcard/revenge_of_the_skiabot/LOTTIE_VERSION" 192cb93a386Sopenharmony_ci }, 193cb93a386Sopenharmony_ci { 194cb93a386Sopenharmony_ci "cmd": [ 195cb93a386Sopenharmony_ci "python", 196cb93a386Sopenharmony_ci "-u", 197cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 198cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 199cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/LOTTIE_VERSION" 200cb93a386Sopenharmony_ci ], 201cb93a386Sopenharmony_ci "env": { 202cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 203cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 204cb93a386Sopenharmony_ci }, 205cb93a386Sopenharmony_ci "infra_step": true, 206cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/LOTTIE_VERSION", 207cb93a386Sopenharmony_ci "~followup_annotations": [ 208cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 209cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 210cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 211cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 212cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 213cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 214cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 215cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 216cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 217cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 218cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 219cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 220cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 221cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 222cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 223cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 224cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 225cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 226cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 227cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 228cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 229cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 230cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 231cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 232cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 233cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 234cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 235cb93a386Sopenharmony_ci ] 236cb93a386Sopenharmony_ci }, 237cb93a386Sopenharmony_ci { 238cb93a386Sopenharmony_ci "cmd": [ 239cb93a386Sopenharmony_ci "python", 240cb93a386Sopenharmony_ci "-u", 241cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 242cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 243cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/lotties" 244cb93a386Sopenharmony_ci ], 245cb93a386Sopenharmony_ci "env": { 246cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 247cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 248cb93a386Sopenharmony_ci }, 249cb93a386Sopenharmony_ci "infra_step": true, 250cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/lotties", 251cb93a386Sopenharmony_ci "~followup_annotations": [ 252cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 253cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 254cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 255cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 256cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 257cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 258cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 259cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 260cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 261cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 262cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 263cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 264cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 265cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 266cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 267cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 268cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 269cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 270cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 271cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 272cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 273cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 274cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 275cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 276cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 277cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 278cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 279cb93a386Sopenharmony_ci ] 280cb93a386Sopenharmony_ci }, 281cb93a386Sopenharmony_ci { 282cb93a386Sopenharmony_ci "cmd": [ 283cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 284cb93a386Sopenharmony_ci "shell", 285cb93a386Sopenharmony_ci "mkdir", 286cb93a386Sopenharmony_ci "-p", 287cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/lotties" 288cb93a386Sopenharmony_ci ], 289cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 290cb93a386Sopenharmony_ci "env": { 291cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 292cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 293cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 294cb93a386Sopenharmony_ci }, 295cb93a386Sopenharmony_ci "infra_step": true, 296cb93a386Sopenharmony_ci "name": "mkdir /sdcard/revenge_of_the_skiabot/lotties" 297cb93a386Sopenharmony_ci }, 298cb93a386Sopenharmony_ci { 299cb93a386Sopenharmony_ci "cmd": [ 300cb93a386Sopenharmony_ci "vpython", 301cb93a386Sopenharmony_ci "-u", 302cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 303cb93a386Sopenharmony_ci "--json-output", 304cb93a386Sopenharmony_ci "/path/to/tmp/json", 305cb93a386Sopenharmony_ci "glob", 306cb93a386Sopenharmony_ci "[START_DIR]/lottie-samples", 307cb93a386Sopenharmony_ci "*" 308cb93a386Sopenharmony_ci ], 309cb93a386Sopenharmony_ci "infra_step": true, 310cb93a386Sopenharmony_ci "name": "ls [START_DIR]/lottie-samples/*", 311cb93a386Sopenharmony_ci "~followup_annotations": [ 312cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@glob@[START_DIR]/lottie-samples/bar.jpg@@@", 313cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@glob@[START_DIR]/lottie-samples/foo.png@@@", 314cb93a386Sopenharmony_ci "@@@STEP_LOG_END@glob@@@" 315cb93a386Sopenharmony_ci ] 316cb93a386Sopenharmony_ci }, 317cb93a386Sopenharmony_ci { 318cb93a386Sopenharmony_ci "cmd": [ 319cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 320cb93a386Sopenharmony_ci "push", 321cb93a386Sopenharmony_ci "[START_DIR]/lottie-samples/bar.jpg", 322cb93a386Sopenharmony_ci "[START_DIR]/lottie-samples/foo.png", 323cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/lotties" 324cb93a386Sopenharmony_ci ], 325cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 326cb93a386Sopenharmony_ci "env": { 327cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 328cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 329cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 330cb93a386Sopenharmony_ci }, 331cb93a386Sopenharmony_ci "infra_step": true, 332cb93a386Sopenharmony_ci "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" 333cb93a386Sopenharmony_ci }, 334cb93a386Sopenharmony_ci { 335cb93a386Sopenharmony_ci "cmd": [ 336cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 337cb93a386Sopenharmony_ci "push", 338cb93a386Sopenharmony_ci "[START_DIR]/tmp/LOTTIE_VERSION", 339cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/LOTTIE_VERSION" 340cb93a386Sopenharmony_ci ], 341cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 342cb93a386Sopenharmony_ci "env": { 343cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 344cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 345cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 346cb93a386Sopenharmony_ci }, 347cb93a386Sopenharmony_ci "infra_step": true, 348cb93a386Sopenharmony_ci "name": "push [START_DIR]/tmp/LOTTIE_VERSION /sdcard/revenge_of_the_skiabot/LOTTIE_VERSION" 349cb93a386Sopenharmony_ci }, 350cb93a386Sopenharmony_ci { 351cb93a386Sopenharmony_ci "cmd": [ 352cb93a386Sopenharmony_ci "python", 353cb93a386Sopenharmony_ci "-u", 354cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 355cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 356cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out" 357cb93a386Sopenharmony_ci ], 358cb93a386Sopenharmony_ci "env": { 359cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 360cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 361cb93a386Sopenharmony_ci }, 362cb93a386Sopenharmony_ci "infra_step": true, 363cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/dm_out", 364cb93a386Sopenharmony_ci "~followup_annotations": [ 365cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 366cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 367cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 368cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 369cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 370cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 371cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 372cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 373cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 374cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 375cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 376cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 377cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 378cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 379cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 380cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 381cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 382cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 383cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 384cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 385cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 386cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 387cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 388cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 389cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 390cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 391cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 392cb93a386Sopenharmony_ci ] 393cb93a386Sopenharmony_ci }, 394cb93a386Sopenharmony_ci { 395cb93a386Sopenharmony_ci "cmd": [ 396cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 397cb93a386Sopenharmony_ci "shell", 398cb93a386Sopenharmony_ci "mkdir", 399cb93a386Sopenharmony_ci "-p", 400cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out" 401cb93a386Sopenharmony_ci ], 402cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 403cb93a386Sopenharmony_ci "env": { 404cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 405cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 406cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 407cb93a386Sopenharmony_ci }, 408cb93a386Sopenharmony_ci "infra_step": true, 409cb93a386Sopenharmony_ci "name": "mkdir /sdcard/revenge_of_the_skiabot/dm_out" 410cb93a386Sopenharmony_ci }, 411cb93a386Sopenharmony_ci { 412cb93a386Sopenharmony_ci "cmd": [ 413cb93a386Sopenharmony_ci "vpython", 414cb93a386Sopenharmony_ci "-u", 415cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 416cb93a386Sopenharmony_ci "--json-output", 417cb93a386Sopenharmony_ci "/path/to/tmp/json", 418cb93a386Sopenharmony_ci "listdir", 419cb93a386Sopenharmony_ci "[START_DIR]/lottie-samples" 420cb93a386Sopenharmony_ci ], 421cb93a386Sopenharmony_ci "infra_step": true, 422cb93a386Sopenharmony_ci "name": "list lottie files", 423cb93a386Sopenharmony_ci "~followup_annotations": [ 424cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/LICENSE@@@", 425cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie 3!.json@@@", 426cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie(test)'!2.json@@@", 427cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie1.json@@@", 428cb93a386Sopenharmony_ci "@@@STEP_LOG_END@listdir@@@" 429cb93a386Sopenharmony_ci ] 430cb93a386Sopenharmony_ci }, 431cb93a386Sopenharmony_ci { 432cb93a386Sopenharmony_ci "cmd": [ 433cb93a386Sopenharmony_ci "vpython", 434cb93a386Sopenharmony_ci "-u", 435cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 436cb93a386Sopenharmony_ci "--json-output", 437cb93a386Sopenharmony_ci "/path/to/tmp/json", 438cb93a386Sopenharmony_ci "copy", 439cb93a386Sopenharmony_ci "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/2.json --match \"^lottie 3!.json$\" --config gles --nocpu; echo $? >/data/local/tmp/rc", 440cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh" 441cb93a386Sopenharmony_ci ], 442cb93a386Sopenharmony_ci "env": { 443cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 444cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 445cb93a386Sopenharmony_ci }, 446cb93a386Sopenharmony_ci "infra_step": true, 447cb93a386Sopenharmony_ci "name": "write dm.sh", 448cb93a386Sopenharmony_ci "~followup_annotations": [ 449cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@dm.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/2.json --match \"^lottie 3!.json$\" --config gles --nocpu; echo $? >/data/local/tmp/rc@@@", 450cb93a386Sopenharmony_ci "@@@STEP_LOG_END@dm.sh@@@" 451cb93a386Sopenharmony_ci ] 452cb93a386Sopenharmony_ci }, 453cb93a386Sopenharmony_ci { 454cb93a386Sopenharmony_ci "cmd": [ 455cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 456cb93a386Sopenharmony_ci "push", 457cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh", 458cb93a386Sopenharmony_ci "/data/local/tmp/" 459cb93a386Sopenharmony_ci ], 460cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 461cb93a386Sopenharmony_ci "env": { 462cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 463cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 464cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 465cb93a386Sopenharmony_ci }, 466cb93a386Sopenharmony_ci "infra_step": true, 467cb93a386Sopenharmony_ci "name": "push dm.sh" 468cb93a386Sopenharmony_ci }, 469cb93a386Sopenharmony_ci { 470cb93a386Sopenharmony_ci "cmd": [ 471cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 472cb93a386Sopenharmony_ci "logcat", 473cb93a386Sopenharmony_ci "-c" 474cb93a386Sopenharmony_ci ], 475cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 476cb93a386Sopenharmony_ci "env": { 477cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 478cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 479cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 480cb93a386Sopenharmony_ci }, 481cb93a386Sopenharmony_ci "infra_step": true, 482cb93a386Sopenharmony_ci "name": "clear log" 483cb93a386Sopenharmony_ci }, 484cb93a386Sopenharmony_ci { 485cb93a386Sopenharmony_ci "cmd": [ 486cb93a386Sopenharmony_ci "python", 487cb93a386Sopenharmony_ci "-u", 488cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print(\"Couldn't read the return code. Probably killed for OOM.\")\n sys.exit(1)\n", 489cb93a386Sopenharmony_ci "/data/local/tmp/", 490cb93a386Sopenharmony_ci "dm.sh" 491cb93a386Sopenharmony_ci ], 492cb93a386Sopenharmony_ci "env": { 493cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 494cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 495cb93a386Sopenharmony_ci }, 496cb93a386Sopenharmony_ci "name": "dm", 497cb93a386Sopenharmony_ci "~followup_annotations": [ 498cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 499cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 500cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 501cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 502cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 503cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 504cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 505cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 506cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 507cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 508cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ print(\"Couldn't read the return code. Probably killed for OOM.\")@@@", 509cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 510cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 511cb93a386Sopenharmony_ci ] 512cb93a386Sopenharmony_ci }, 513cb93a386Sopenharmony_ci { 514cb93a386Sopenharmony_ci "cmd": [ 515cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 516cb93a386Sopenharmony_ci "shell", 517cb93a386Sopenharmony_ci "cat", 518cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/2.json" 519cb93a386Sopenharmony_ci ], 520cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 521cb93a386Sopenharmony_ci "env": { 522cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 523cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 524cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 525cb93a386Sopenharmony_ci }, 526cb93a386Sopenharmony_ci "infra_step": true, 527cb93a386Sopenharmony_ci "name": "read /sdcard/revenge_of_the_skiabot/dm_out/2.json" 528cb93a386Sopenharmony_ci }, 529cb93a386Sopenharmony_ci { 530cb93a386Sopenharmony_ci "cmd": [ 531cb93a386Sopenharmony_ci "python", 532cb93a386Sopenharmony_ci "-u", 533cb93a386Sopenharmony_ci "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\ntrace_json = json.loads(trace_output)\nlottie_filename = sys.argv[2]\noutput_json_file = sys.argv[3]\n\nperf_results = {}\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_start = False\nfor trace in trace_json:\n if 'skottie::Animation::seek' in trace['name']:\n if frame_start:\n raise Exception('We got consecutive Animation::seek without a ' +\n 'render. Something is wrong.')\n frame_start = True\n current_frame_duration = trace['dur']\n elif 'skottie::Animation::render' in trace['name']:\n if not frame_start:\n raise Exception('We got an Animation::render without a seek first. ' +\n 'Something is wrong.')\n\n current_frame_duration += trace['dur']\n frame_start = False\n total_frames += 1\n frame_max = max(frame_max, current_frame_duration)\n frame_min = (min(frame_min, current_frame_duration)\n if frame_min else current_frame_duration)\n frame_cumulative += current_frame_duration\n\nexpected_dm_frames = 25\nif total_frames != expected_dm_frames:\n raise Exception(\n 'Got ' + str(total_frames) + ' frames instead of ' +\n str(expected_dm_frames))\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/total_frames\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n f.write(json.dumps(perf_results))\n", 534cb93a386Sopenharmony_ci "\n[{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":452,\"dur\":2.57,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPaint(const SkPaint &)\",\"ts\":473,\"dur\":2.67e+03,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.15e+03,\"dur\":2.25,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.15e+03,\"dur\":216,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPath(const SkPath &, const SkPaint &)\",\"ts\":3.35e+03,\"dur\":15.1,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.37e+03,\"dur\":1.17,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.37e+03,\"dur\":140,\"tid\":1,\"pid\":0}]\n", 535cb93a386Sopenharmony_ci "lottie 3!.json", 536cb93a386Sopenharmony_ci "/path/to/tmp/json" 537cb93a386Sopenharmony_ci ], 538cb93a386Sopenharmony_ci "env": { 539cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 540cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 541cb93a386Sopenharmony_ci }, 542cb93a386Sopenharmony_ci "name": "parse lottie 3!.json trace", 543cb93a386Sopenharmony_ci "~followup_annotations": [ 544cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@{@@@", 545cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_avg_us\": 179.71, @@@", 546cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_max_us\": 218.25, @@@", 547cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_min_us\": 141.17@@@", 548cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@}@@@", 549cb93a386Sopenharmony_ci "@@@STEP_LOG_END@json.output@@@", 550cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 551cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import json@@@", 552cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 553cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 554cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@", 555cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_json = json.loads(trace_output)@@@", 556cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@lottie_filename = sys.argv[2]@@@", 557cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[3]@@@", 558cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 559cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@", 560cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@", 561cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@", 562cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@", 563cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@", 564cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@", 565cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_start = False@@@", 566cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@for trace in trace_json:@@@", 567cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if 'skottie::Animation::seek' in trace['name']:@@@", 568cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_start:@@@", 569cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got consecutive Animation::seek without a ' +@@@", 570cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'render. Something is wrong.')@@@", 571cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = True@@@", 572cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration = trace['dur']@@@", 573cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ elif 'skottie::Animation::render' in trace['name']:@@@", 574cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if not frame_start:@@@", 575cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got an Animation::render without a seek first. ' +@@@", 576cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Something is wrong.')@@@", 577cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 578cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration += trace['dur']@@@", 579cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = False@@@", 580cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ total_frames += 1@@@", 581cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_max = max(frame_max, current_frame_duration)@@@", 582cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_min = (min(frame_min, current_frame_duration)@@@", 583cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_min else current_frame_duration)@@@", 584cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_cumulative += current_frame_duration@@@", 585cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 586cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@expected_dm_frames = 25@@@", 587cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if total_frames != expected_dm_frames:@@@", 588cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception(@@@", 589cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Got ' + str(total_frames) + ' frames instead of ' +@@@", 590cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ str(expected_dm_frames))@@@", 591cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@", 592cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@", 593cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/total_frames@@@", 594cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 595cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@", 596cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@", 597cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ f.write(json.dumps(perf_results))@@@", 598cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 599cb93a386Sopenharmony_ci ] 600cb93a386Sopenharmony_ci }, 601cb93a386Sopenharmony_ci { 602cb93a386Sopenharmony_ci "cmd": [ 603cb93a386Sopenharmony_ci "python", 604cb93a386Sopenharmony_ci "-u", 605cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 606cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 607cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/2.json" 608cb93a386Sopenharmony_ci ], 609cb93a386Sopenharmony_ci "env": { 610cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 611cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 612cb93a386Sopenharmony_ci }, 613cb93a386Sopenharmony_ci "infra_step": true, 614cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/dm_out/2.json", 615cb93a386Sopenharmony_ci "~followup_annotations": [ 616cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 617cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 618cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 619cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 620cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 621cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 622cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 623cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 624cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 625cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 626cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 627cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 628cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 629cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 630cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 631cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 632cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 633cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 634cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 635cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 636cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 637cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 638cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 639cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 640cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 641cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 642cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 643cb93a386Sopenharmony_ci ] 644cb93a386Sopenharmony_ci }, 645cb93a386Sopenharmony_ci { 646cb93a386Sopenharmony_ci "cmd": [ 647cb93a386Sopenharmony_ci "vpython", 648cb93a386Sopenharmony_ci "-u", 649cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 650cb93a386Sopenharmony_ci "--json-output", 651cb93a386Sopenharmony_ci "/path/to/tmp/json", 652cb93a386Sopenharmony_ci "copy", 653cb93a386Sopenharmony_ci "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/3.json --match \\^lottie\\(test\\)\\'\\!2\\.json\\$ --config gles --nocpu; echo $? >/data/local/tmp/rc", 654cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh" 655cb93a386Sopenharmony_ci ], 656cb93a386Sopenharmony_ci "env": { 657cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 658cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 659cb93a386Sopenharmony_ci }, 660cb93a386Sopenharmony_ci "infra_step": true, 661cb93a386Sopenharmony_ci "name": "write dm.sh (2)", 662cb93a386Sopenharmony_ci "~followup_annotations": [ 663cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@dm.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/3.json --match \\^lottie\\(test\\)\\'\\!2\\.json\\$ --config gles --nocpu; echo $? >/data/local/tmp/rc@@@", 664cb93a386Sopenharmony_ci "@@@STEP_LOG_END@dm.sh@@@" 665cb93a386Sopenharmony_ci ] 666cb93a386Sopenharmony_ci }, 667cb93a386Sopenharmony_ci { 668cb93a386Sopenharmony_ci "cmd": [ 669cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 670cb93a386Sopenharmony_ci "push", 671cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh", 672cb93a386Sopenharmony_ci "/data/local/tmp/" 673cb93a386Sopenharmony_ci ], 674cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 675cb93a386Sopenharmony_ci "env": { 676cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 677cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 678cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 679cb93a386Sopenharmony_ci }, 680cb93a386Sopenharmony_ci "infra_step": true, 681cb93a386Sopenharmony_ci "name": "push dm.sh (2)" 682cb93a386Sopenharmony_ci }, 683cb93a386Sopenharmony_ci { 684cb93a386Sopenharmony_ci "cmd": [ 685cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 686cb93a386Sopenharmony_ci "logcat", 687cb93a386Sopenharmony_ci "-c" 688cb93a386Sopenharmony_ci ], 689cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 690cb93a386Sopenharmony_ci "env": { 691cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 692cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 693cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 694cb93a386Sopenharmony_ci }, 695cb93a386Sopenharmony_ci "infra_step": true, 696cb93a386Sopenharmony_ci "name": "clear log (2)" 697cb93a386Sopenharmony_ci }, 698cb93a386Sopenharmony_ci { 699cb93a386Sopenharmony_ci "cmd": [ 700cb93a386Sopenharmony_ci "python", 701cb93a386Sopenharmony_ci "-u", 702cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print(\"Couldn't read the return code. Probably killed for OOM.\")\n sys.exit(1)\n", 703cb93a386Sopenharmony_ci "/data/local/tmp/", 704cb93a386Sopenharmony_ci "dm.sh" 705cb93a386Sopenharmony_ci ], 706cb93a386Sopenharmony_ci "env": { 707cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 708cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 709cb93a386Sopenharmony_ci }, 710cb93a386Sopenharmony_ci "name": "dm (2)", 711cb93a386Sopenharmony_ci "~followup_annotations": [ 712cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 713cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 714cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 715cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 716cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 717cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 718cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 719cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 720cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 721cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 722cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ print(\"Couldn't read the return code. Probably killed for OOM.\")@@@", 723cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 724cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 725cb93a386Sopenharmony_ci ] 726cb93a386Sopenharmony_ci }, 727cb93a386Sopenharmony_ci { 728cb93a386Sopenharmony_ci "cmd": [ 729cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 730cb93a386Sopenharmony_ci "shell", 731cb93a386Sopenharmony_ci "cat", 732cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/3.json" 733cb93a386Sopenharmony_ci ], 734cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 735cb93a386Sopenharmony_ci "env": { 736cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 737cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 738cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 739cb93a386Sopenharmony_ci }, 740cb93a386Sopenharmony_ci "infra_step": true, 741cb93a386Sopenharmony_ci "name": "read /sdcard/revenge_of_the_skiabot/dm_out/3.json" 742cb93a386Sopenharmony_ci }, 743cb93a386Sopenharmony_ci { 744cb93a386Sopenharmony_ci "cmd": [ 745cb93a386Sopenharmony_ci "python", 746cb93a386Sopenharmony_ci "-u", 747cb93a386Sopenharmony_ci "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\ntrace_json = json.loads(trace_output)\nlottie_filename = sys.argv[2]\noutput_json_file = sys.argv[3]\n\nperf_results = {}\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_start = False\nfor trace in trace_json:\n if 'skottie::Animation::seek' in trace['name']:\n if frame_start:\n raise Exception('We got consecutive Animation::seek without a ' +\n 'render. Something is wrong.')\n frame_start = True\n current_frame_duration = trace['dur']\n elif 'skottie::Animation::render' in trace['name']:\n if not frame_start:\n raise Exception('We got an Animation::render without a seek first. ' +\n 'Something is wrong.')\n\n current_frame_duration += trace['dur']\n frame_start = False\n total_frames += 1\n frame_max = max(frame_max, current_frame_duration)\n frame_min = (min(frame_min, current_frame_duration)\n if frame_min else current_frame_duration)\n frame_cumulative += current_frame_duration\n\nexpected_dm_frames = 25\nif total_frames != expected_dm_frames:\n raise Exception(\n 'Got ' + str(total_frames) + ' frames instead of ' +\n str(expected_dm_frames))\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/total_frames\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n f.write(json.dumps(perf_results))\n", 748cb93a386Sopenharmony_ci "\n[{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":452,\"dur\":2.57,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPaint(const SkPaint &)\",\"ts\":473,\"dur\":2.67e+03,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.15e+03,\"dur\":2.25,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.15e+03,\"dur\":216,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPath(const SkPath &, const SkPaint &)\",\"ts\":3.35e+03,\"dur\":15.1,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.37e+03,\"dur\":1.17,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.37e+03,\"dur\":140,\"tid\":1,\"pid\":0}]\n", 749cb93a386Sopenharmony_ci "lottie(test)'!2.json", 750cb93a386Sopenharmony_ci "/path/to/tmp/json" 751cb93a386Sopenharmony_ci ], 752cb93a386Sopenharmony_ci "env": { 753cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 754cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 755cb93a386Sopenharmony_ci }, 756cb93a386Sopenharmony_ci "name": "parse lottie(test)'!2.json trace", 757cb93a386Sopenharmony_ci "~followup_annotations": [ 758cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@{@@@", 759cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_avg_us\": 179.71, @@@", 760cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_max_us\": 218.25, @@@", 761cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_min_us\": 141.17@@@", 762cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@}@@@", 763cb93a386Sopenharmony_ci "@@@STEP_LOG_END@json.output@@@", 764cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 765cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import json@@@", 766cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 767cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 768cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@", 769cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_json = json.loads(trace_output)@@@", 770cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@lottie_filename = sys.argv[2]@@@", 771cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[3]@@@", 772cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 773cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@", 774cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@", 775cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@", 776cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@", 777cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@", 778cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@", 779cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_start = False@@@", 780cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@for trace in trace_json:@@@", 781cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if 'skottie::Animation::seek' in trace['name']:@@@", 782cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_start:@@@", 783cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got consecutive Animation::seek without a ' +@@@", 784cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'render. Something is wrong.')@@@", 785cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = True@@@", 786cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration = trace['dur']@@@", 787cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ elif 'skottie::Animation::render' in trace['name']:@@@", 788cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if not frame_start:@@@", 789cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got an Animation::render without a seek first. ' +@@@", 790cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Something is wrong.')@@@", 791cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 792cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration += trace['dur']@@@", 793cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = False@@@", 794cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ total_frames += 1@@@", 795cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_max = max(frame_max, current_frame_duration)@@@", 796cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_min = (min(frame_min, current_frame_duration)@@@", 797cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_min else current_frame_duration)@@@", 798cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_cumulative += current_frame_duration@@@", 799cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 800cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@expected_dm_frames = 25@@@", 801cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if total_frames != expected_dm_frames:@@@", 802cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception(@@@", 803cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Got ' + str(total_frames) + ' frames instead of ' +@@@", 804cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ str(expected_dm_frames))@@@", 805cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@", 806cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@", 807cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/total_frames@@@", 808cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 809cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@", 810cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@", 811cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ f.write(json.dumps(perf_results))@@@", 812cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 813cb93a386Sopenharmony_ci ] 814cb93a386Sopenharmony_ci }, 815cb93a386Sopenharmony_ci { 816cb93a386Sopenharmony_ci "cmd": [ 817cb93a386Sopenharmony_ci "python", 818cb93a386Sopenharmony_ci "-u", 819cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 820cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 821cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/3.json" 822cb93a386Sopenharmony_ci ], 823cb93a386Sopenharmony_ci "env": { 824cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 825cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 826cb93a386Sopenharmony_ci }, 827cb93a386Sopenharmony_ci "infra_step": true, 828cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/dm_out/3.json", 829cb93a386Sopenharmony_ci "~followup_annotations": [ 830cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 831cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 832cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 833cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 834cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 835cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 836cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 837cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 838cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 839cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 840cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 841cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 842cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 843cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 844cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 845cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 846cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 847cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 848cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 849cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 850cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 851cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 852cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 853cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 854cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 855cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 856cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 857cb93a386Sopenharmony_ci ] 858cb93a386Sopenharmony_ci }, 859cb93a386Sopenharmony_ci { 860cb93a386Sopenharmony_ci "cmd": [ 861cb93a386Sopenharmony_ci "vpython", 862cb93a386Sopenharmony_ci "-u", 863cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 864cb93a386Sopenharmony_ci "--json-output", 865cb93a386Sopenharmony_ci "/path/to/tmp/json", 866cb93a386Sopenharmony_ci "copy", 867cb93a386Sopenharmony_ci "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/4.json --match \\^lottie1\\.json\\$ --config gles --nocpu; echo $? >/data/local/tmp/rc", 868cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh" 869cb93a386Sopenharmony_ci ], 870cb93a386Sopenharmony_ci "env": { 871cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 872cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 873cb93a386Sopenharmony_ci }, 874cb93a386Sopenharmony_ci "infra_step": true, 875cb93a386Sopenharmony_ci "name": "write dm.sh (3)", 876cb93a386Sopenharmony_ci "~followup_annotations": [ 877cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@dm.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --resourcePath /sdcard/revenge_of_the_skiabot/resources --lotties /sdcard/revenge_of_the_skiabot/lotties --src lottie --nonativeFonts --verbose --traceMatch skottie --trace /sdcard/revenge_of_the_skiabot/dm_out/4.json --match \\^lottie1\\.json\\$ --config gles --nocpu; echo $? >/data/local/tmp/rc@@@", 878cb93a386Sopenharmony_ci "@@@STEP_LOG_END@dm.sh@@@" 879cb93a386Sopenharmony_ci ] 880cb93a386Sopenharmony_ci }, 881cb93a386Sopenharmony_ci { 882cb93a386Sopenharmony_ci "cmd": [ 883cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 884cb93a386Sopenharmony_ci "push", 885cb93a386Sopenharmony_ci "[START_DIR]/tmp/dm.sh", 886cb93a386Sopenharmony_ci "/data/local/tmp/" 887cb93a386Sopenharmony_ci ], 888cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 889cb93a386Sopenharmony_ci "env": { 890cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 891cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 892cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 893cb93a386Sopenharmony_ci }, 894cb93a386Sopenharmony_ci "infra_step": true, 895cb93a386Sopenharmony_ci "name": "push dm.sh (3)" 896cb93a386Sopenharmony_ci }, 897cb93a386Sopenharmony_ci { 898cb93a386Sopenharmony_ci "cmd": [ 899cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 900cb93a386Sopenharmony_ci "logcat", 901cb93a386Sopenharmony_ci "-c" 902cb93a386Sopenharmony_ci ], 903cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 904cb93a386Sopenharmony_ci "env": { 905cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 906cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 907cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 908cb93a386Sopenharmony_ci }, 909cb93a386Sopenharmony_ci "infra_step": true, 910cb93a386Sopenharmony_ci "name": "clear log (3)" 911cb93a386Sopenharmony_ci }, 912cb93a386Sopenharmony_ci { 913cb93a386Sopenharmony_ci "cmd": [ 914cb93a386Sopenharmony_ci "python", 915cb93a386Sopenharmony_ci "-u", 916cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print(\"Couldn't read the return code. Probably killed for OOM.\")\n sys.exit(1)\n", 917cb93a386Sopenharmony_ci "/data/local/tmp/", 918cb93a386Sopenharmony_ci "dm.sh" 919cb93a386Sopenharmony_ci ], 920cb93a386Sopenharmony_ci "env": { 921cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 922cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 923cb93a386Sopenharmony_ci }, 924cb93a386Sopenharmony_ci "name": "dm (3)", 925cb93a386Sopenharmony_ci "~followup_annotations": [ 926cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 927cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 928cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 929cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 930cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 931cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 932cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 933cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 934cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 935cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 936cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ print(\"Couldn't read the return code. Probably killed for OOM.\")@@@", 937cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 938cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 939cb93a386Sopenharmony_ci ] 940cb93a386Sopenharmony_ci }, 941cb93a386Sopenharmony_ci { 942cb93a386Sopenharmony_ci "cmd": [ 943cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 944cb93a386Sopenharmony_ci "shell", 945cb93a386Sopenharmony_ci "cat", 946cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/4.json" 947cb93a386Sopenharmony_ci ], 948cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 949cb93a386Sopenharmony_ci "env": { 950cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 951cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 952cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 953cb93a386Sopenharmony_ci }, 954cb93a386Sopenharmony_ci "infra_step": true, 955cb93a386Sopenharmony_ci "name": "read /sdcard/revenge_of_the_skiabot/dm_out/4.json" 956cb93a386Sopenharmony_ci }, 957cb93a386Sopenharmony_ci { 958cb93a386Sopenharmony_ci "cmd": [ 959cb93a386Sopenharmony_ci "python", 960cb93a386Sopenharmony_ci "-u", 961cb93a386Sopenharmony_ci "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\ntrace_json = json.loads(trace_output)\nlottie_filename = sys.argv[2]\noutput_json_file = sys.argv[3]\n\nperf_results = {}\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_start = False\nfor trace in trace_json:\n if 'skottie::Animation::seek' in trace['name']:\n if frame_start:\n raise Exception('We got consecutive Animation::seek without a ' +\n 'render. Something is wrong.')\n frame_start = True\n current_frame_duration = trace['dur']\n elif 'skottie::Animation::render' in trace['name']:\n if not frame_start:\n raise Exception('We got an Animation::render without a seek first. ' +\n 'Something is wrong.')\n\n current_frame_duration += trace['dur']\n frame_start = False\n total_frames += 1\n frame_max = max(frame_max, current_frame_duration)\n frame_min = (min(frame_min, current_frame_duration)\n if frame_min else current_frame_duration)\n frame_cumulative += current_frame_duration\n\nexpected_dm_frames = 25\nif total_frames != expected_dm_frames:\n raise Exception(\n 'Got ' + str(total_frames) + ' frames instead of ' +\n str(expected_dm_frames))\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/total_frames\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n f.write(json.dumps(perf_results))\n", 962cb93a386Sopenharmony_ci "\n[{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":452,\"dur\":2.57,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPaint(const SkPaint &)\",\"ts\":473,\"dur\":2.67e+03,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.15e+03,\"dur\":2.25,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.15e+03,\"dur\":216,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void SkCanvas::drawPath(const SkPath &, const SkPaint &)\",\"ts\":3.35e+03,\"dur\":15.1,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::seek(SkScalar)\",\"ts\":3.37e+03,\"dur\":1.17,\"tid\":1,\"pid\":0},{\"ph\":\"X\",\"name\":\"void skottie::Animation::render(SkCanvas *, const SkRect *, RenderFlags) const\",\"ts\":3.37e+03,\"dur\":140,\"tid\":1,\"pid\":0}]\n", 963cb93a386Sopenharmony_ci "lottie1.json", 964cb93a386Sopenharmony_ci "/path/to/tmp/json" 965cb93a386Sopenharmony_ci ], 966cb93a386Sopenharmony_ci "env": { 967cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 968cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 969cb93a386Sopenharmony_ci }, 970cb93a386Sopenharmony_ci "name": "parse lottie1.json trace", 971cb93a386Sopenharmony_ci "~followup_annotations": [ 972cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@{@@@", 973cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_avg_us\": 179.71, @@@", 974cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_max_us\": 218.25, @@@", 975cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@ \"frame_min_us\": 141.17@@@", 976cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@json.output@}@@@", 977cb93a386Sopenharmony_ci "@@@STEP_LOG_END@json.output@@@", 978cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 979cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import json@@@", 980cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 981cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 982cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@", 983cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@trace_json = json.loads(trace_output)@@@", 984cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@lottie_filename = sys.argv[2]@@@", 985cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[3]@@@", 986cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 987cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@", 988cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@", 989cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@", 990cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@", 991cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@", 992cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@", 993cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@frame_start = False@@@", 994cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@for trace in trace_json:@@@", 995cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if 'skottie::Animation::seek' in trace['name']:@@@", 996cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_start:@@@", 997cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got consecutive Animation::seek without a ' +@@@", 998cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'render. Something is wrong.')@@@", 999cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = True@@@", 1000cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration = trace['dur']@@@", 1001cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ elif 'skottie::Animation::render' in trace['name']:@@@", 1002cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if not frame_start:@@@", 1003cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('We got an Animation::render without a seek first. ' +@@@", 1004cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Something is wrong.')@@@", 1005cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1006cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ current_frame_duration += trace['dur']@@@", 1007cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_start = False@@@", 1008cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ total_frames += 1@@@", 1009cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_max = max(frame_max, current_frame_duration)@@@", 1010cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_min = (min(frame_min, current_frame_duration)@@@", 1011cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if frame_min else current_frame_duration)@@@", 1012cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ frame_cumulative += current_frame_duration@@@", 1013cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1014cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@expected_dm_frames = 25@@@", 1015cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if total_frames != expected_dm_frames:@@@", 1016cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception(@@@", 1017cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ 'Got ' + str(total_frames) + ' frames instead of ' +@@@", 1018cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ str(expected_dm_frames))@@@", 1019cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@", 1020cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@", 1021cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/total_frames@@@", 1022cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1023cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@", 1024cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@", 1025cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ f.write(json.dumps(perf_results))@@@", 1026cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 1027cb93a386Sopenharmony_ci ] 1028cb93a386Sopenharmony_ci }, 1029cb93a386Sopenharmony_ci { 1030cb93a386Sopenharmony_ci "cmd": [ 1031cb93a386Sopenharmony_ci "python", 1032cb93a386Sopenharmony_ci "-u", 1033cb93a386Sopenharmony_ci "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 1034cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 1035cb93a386Sopenharmony_ci "/sdcard/revenge_of_the_skiabot/dm_out/4.json" 1036cb93a386Sopenharmony_ci ], 1037cb93a386Sopenharmony_ci "env": { 1038cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 1039cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1040cb93a386Sopenharmony_ci }, 1041cb93a386Sopenharmony_ci "infra_step": true, 1042cb93a386Sopenharmony_ci "name": "rm /sdcard/revenge_of_the_skiabot/dm_out/4.json", 1043cb93a386Sopenharmony_ci "~followup_annotations": [ 1044cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1045cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1046cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1047cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1048cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 1049cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 1050cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 1051cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 1052cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 1053cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1054cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 1055cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1056cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 1057cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 1058cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 1059cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1060cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@try:@@@", 1061cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 1062cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 1063cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 1064cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 1065cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1066cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 1067cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1068cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 1069cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 1070cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 1071cb93a386Sopenharmony_ci ] 1072cb93a386Sopenharmony_ci }, 1073cb93a386Sopenharmony_ci { 1074cb93a386Sopenharmony_ci "cmd": [ 1075cb93a386Sopenharmony_ci "python", 1076cb93a386Sopenharmony_ci "-u", 1077cb93a386Sopenharmony_ci "import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n" 1078cb93a386Sopenharmony_ci ], 1079cb93a386Sopenharmony_ci "name": "get swarming bot id (2)", 1080cb93a386Sopenharmony_ci "~followup_annotations": [ 1081cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import os@@@", 1082cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@", 1083cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 1084cb93a386Sopenharmony_ci ] 1085cb93a386Sopenharmony_ci }, 1086cb93a386Sopenharmony_ci { 1087cb93a386Sopenharmony_ci "cmd": [ 1088cb93a386Sopenharmony_ci "python", 1089cb93a386Sopenharmony_ci "-u", 1090cb93a386Sopenharmony_ci "import os\nprint(os.environ.get('SWARMING_TASK_ID', ''))\n" 1091cb93a386Sopenharmony_ci ], 1092cb93a386Sopenharmony_ci "name": "get swarming task id", 1093cb93a386Sopenharmony_ci "~followup_annotations": [ 1094cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import os@@@", 1095cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_TASK_ID', ''))@@@", 1096cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 1097cb93a386Sopenharmony_ci ] 1098cb93a386Sopenharmony_ci }, 1099cb93a386Sopenharmony_ci { 1100cb93a386Sopenharmony_ci "cmd": [ 1101cb93a386Sopenharmony_ci "vpython", 1102cb93a386Sopenharmony_ci "-u", 1103cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1104cb93a386Sopenharmony_ci "--json-output", 1105cb93a386Sopenharmony_ci "/path/to/tmp/json", 1106cb93a386Sopenharmony_ci "ensure-directory", 1107cb93a386Sopenharmony_ci "--mode", 1108cb93a386Sopenharmony_ci "0777", 1109cb93a386Sopenharmony_ci "[START_DIR]/[SWARM_OUT_DIR]" 1110cb93a386Sopenharmony_ci ], 1111cb93a386Sopenharmony_ci "infra_step": true, 1112cb93a386Sopenharmony_ci "name": "makedirs perf_dir" 1113cb93a386Sopenharmony_ci }, 1114cb93a386Sopenharmony_ci { 1115cb93a386Sopenharmony_ci "cmd": [ 1116cb93a386Sopenharmony_ci "vpython", 1117cb93a386Sopenharmony_ci "-u", 1118cb93a386Sopenharmony_ci "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1119cb93a386Sopenharmony_ci "--json-output", 1120cb93a386Sopenharmony_ci "/path/to/tmp/json", 1121cb93a386Sopenharmony_ci "copy", 1122cb93a386Sopenharmony_ci "{\n \"gitHash\": \"abc123\",\n \"key\": {\n \"arch\": \"arm\",\n \"bench_type\": \"tracing\",\n \"compiler\": \"Clang\",\n \"configuration\": \"Release\",\n \"cpu_or_gpu\": \"GPU\",\n \"cpu_or_gpu_value\": \"Mali400MP2\",\n \"extra_config\": \"Android_SkottieTracing\",\n \"model\": \"AndroidOne\",\n \"os\": \"Android\",\n \"source_type\": \"skottie\"\n },\n \"renderer\": \"skottie\",\n \"results\": {\n \"lottie 3!.json\": {\n \"gles\": {\n \"frame_avg_us\": 179.71,\n \"frame_max_us\": 218.25,\n \"frame_min_us\": 141.17\n }\n },\n \"lottie(test)'!2.json\": {\n \"gles\": {\n \"frame_avg_us\": 179.71,\n \"frame_max_us\": 218.25,\n \"frame_min_us\": 141.17\n }\n },\n \"lottie1.json\": {\n \"gles\": {\n \"frame_avg_us\": 179.71,\n \"frame_max_us\": 218.25,\n \"frame_min_us\": 141.17\n }\n }\n },\n \"swarming_bot_id\": \"\",\n \"swarming_task_id\": \"\"\n}", 1123cb93a386Sopenharmony_ci "[START_DIR]/[SWARM_OUT_DIR]/perf_abc123_1337000001.json" 1124cb93a386Sopenharmony_ci ], 1125cb93a386Sopenharmony_ci "infra_step": true, 1126cb93a386Sopenharmony_ci "name": "write output JSON", 1127cb93a386Sopenharmony_ci "~followup_annotations": [ 1128cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@{@@@", 1129cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"gitHash\": \"abc123\",@@@", 1130cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"key\": {@@@", 1131cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"arch\": \"arm\",@@@", 1132cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"bench_type\": \"tracing\",@@@", 1133cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"compiler\": \"Clang\",@@@", 1134cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"configuration\": \"Release\",@@@", 1135cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"cpu_or_gpu\": \"GPU\",@@@", 1136cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"cpu_or_gpu_value\": \"Mali400MP2\",@@@", 1137cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"extra_config\": \"Android_SkottieTracing\",@@@", 1138cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"model\": \"AndroidOne\",@@@", 1139cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"os\": \"Android\",@@@", 1140cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"source_type\": \"skottie\"@@@", 1141cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ },@@@", 1142cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"renderer\": \"skottie\",@@@", 1143cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"results\": {@@@", 1144cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"lottie 3!.json\": {@@@", 1145cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"gles\": {@@@", 1146cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_avg_us\": 179.71,@@@", 1147cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_max_us\": 218.25,@@@", 1148cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_min_us\": 141.17@@@", 1149cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ }@@@", 1150cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ },@@@", 1151cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"lottie(test)'!2.json\": {@@@", 1152cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"gles\": {@@@", 1153cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_avg_us\": 179.71,@@@", 1154cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_max_us\": 218.25,@@@", 1155cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_min_us\": 141.17@@@", 1156cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ }@@@", 1157cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ },@@@", 1158cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"lottie1.json\": {@@@", 1159cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"gles\": {@@@", 1160cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_avg_us\": 179.71,@@@", 1161cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_max_us\": 218.25,@@@", 1162cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"frame_min_us\": 141.17@@@", 1163cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ }@@@", 1164cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ }@@@", 1165cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ },@@@", 1166cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"swarming_bot_id\": \"\",@@@", 1167cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@ \"swarming_task_id\": \"\"@@@", 1168cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@perf_abc123_1337000001.json@}@@@", 1169cb93a386Sopenharmony_ci "@@@STEP_LOG_END@perf_abc123_1337000001.json@@@" 1170cb93a386Sopenharmony_ci ] 1171cb93a386Sopenharmony_ci }, 1172cb93a386Sopenharmony_ci { 1173cb93a386Sopenharmony_ci "cmd": [ 1174cb93a386Sopenharmony_ci "python", 1175cb93a386Sopenharmony_ci "-u", 1176cb93a386Sopenharmony_ci "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n try:\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print(line)\n", 1177cb93a386Sopenharmony_ci "[START_DIR]/build" 1178cb93a386Sopenharmony_ci ], 1179cb93a386Sopenharmony_ci "env": { 1180cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 1181cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1182cb93a386Sopenharmony_ci }, 1183cb93a386Sopenharmony_ci "infra_step": true, 1184cb93a386Sopenharmony_ci "name": "dump log", 1185cb93a386Sopenharmony_ci "timeout": 300, 1186cb93a386Sopenharmony_ci "~followup_annotations": [ 1187cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@@@@", 1188cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import os@@@", 1189cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1190cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1191cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 1192cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 1193cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 1194cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 1195cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 1196cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 1197cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 1198cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 1199cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ try:@@@", 1200cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 1201cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 1202cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@", 1203cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ pass@@@", 1204cb93a386Sopenharmony_ci "@@@STEP_LOG_LINE@python.inline@ print(line)@@@", 1205cb93a386Sopenharmony_ci "@@@STEP_LOG_END@python.inline@@@" 1206cb93a386Sopenharmony_ci ] 1207cb93a386Sopenharmony_ci }, 1208cb93a386Sopenharmony_ci { 1209cb93a386Sopenharmony_ci "cmd": [ 1210cb93a386Sopenharmony_ci "/opt/infra-android/tools/adb", 1211cb93a386Sopenharmony_ci "kill-server" 1212cb93a386Sopenharmony_ci ], 1213cb93a386Sopenharmony_ci "cwd": "[START_DIR]/skia", 1214cb93a386Sopenharmony_ci "env": { 1215cb93a386Sopenharmony_ci "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1216cb93a386Sopenharmony_ci "CHROME_HEADLESS": "1", 1217cb93a386Sopenharmony_ci "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1218cb93a386Sopenharmony_ci }, 1219cb93a386Sopenharmony_ci "infra_step": true, 1220cb93a386Sopenharmony_ci "name": "kill adb server" 1221cb93a386Sopenharmony_ci }, 1222cb93a386Sopenharmony_ci { 1223cb93a386Sopenharmony_ci "name": "$result" 1224cb93a386Sopenharmony_ci } 1225cb93a386Sopenharmony_ci]