Home | History | Annotate | Download | only in test.expected
      1 [
      2   {
      3     "cmd": [
      4       "python",
      5       "-u",
      6       "\nimport os\nCHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')\nwith open(CHROMECAST_IP_FILE, 'r') as f:\n  print f.read()\n"
      7     ],
      8     "env": {
      9       "BUILDTYPE": "Release",
     10       "CHROME_HEADLESS": "1",
     11       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     12       "SKIA_OUT": "[START_DIR]/out"
     13     },
     14     "infra_step": true,
     15     "name": "read chromecast ip",
     16     "stdout": "/path/to/tmp/",
     17     "~followup_annotations": [
     18       "@@@STEP_LOG_LINE (a] python.inline@@@@",
     19       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
     20       "@@@STEP_LOG_LINE (a] python.inline@CHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')@@@",
     21       "@@@STEP_LOG_LINE (a] python.inline@with open(CHROMECAST_IP_FILE, 'r') as f:@@@",
     22       "@@@STEP_LOG_LINE (a] python.inline@  print f.read()@@@",
     23       "@@@STEP_LOG_END (a] python.inline@@@"
     24     ]
     25   },
     26   {
     27     "cmd": [
     28       "adb",
     29       "connect",
     30       "192.168.1.2:5555"
     31     ],
     32     "env": {
     33       "BUILDTYPE": "Release",
     34       "CHROME_HEADLESS": "1",
     35       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     36       "SKIA_OUT": "[START_DIR]/out"
     37     },
     38     "infra_step": true,
     39     "name": "adb connect 192.168.1.2:5555"
     40   },
     41   {
     42     "cmd": [
     43       "adb",
     44       "shell",
     45       "mkdir",
     46       "-p",
     47       "/cache/skia/resources"
     48     ],
     49     "cwd": "[START_DIR]/skia",
     50     "env": {
     51       "BUILDTYPE": "Release",
     52       "CHROME_HEADLESS": "1",
     53       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     54       "SKIA_OUT": "[START_DIR]/out"
     55     },
     56     "infra_step": true,
     57     "name": "mkdir /cache/skia/resources"
     58   },
     59   {
     60     "cmd": [
     61       "adb",
     62       "shell",
     63       "mkdir",
     64       "-p",
     65       "/cache/skia/bin"
     66     ],
     67     "cwd": "[START_DIR]/skia",
     68     "env": {
     69       "BUILDTYPE": "Release",
     70       "CHROME_HEADLESS": "1",
     71       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     72       "SKIA_OUT": "[START_DIR]/out"
     73     },
     74     "infra_step": true,
     75     "name": "mkdir /cache/skia/bin"
     76   },
     77   {
     78     "cmd": [
     79       "python",
     80       "-u",
     81       "\nimport os\nimport subprocess\nimport sys\nhost   = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n  p = os.path.relpath(d, host)\n  if p != '.' and p.startswith('.'):\n    continue\n  for f in fs:\n    print os.path.join(p,f)\n    hp = os.path.realpath(os.path.join(host, p, f))\n    if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n      print \"Skipping because it is too big\"\n    else:\n      subprocess.check_call(['adb', 'push',\n                            hp, os.path.join(device, p, f)])\n",
     82       "[START_DIR]/skia/resources",
     83       "/cache/skia/resources"
     84     ],
     85     "env": {
     86       "BUILDTYPE": "Release",
     87       "CHROME_HEADLESS": "1",
     88       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     89       "SKIA_OUT": "[START_DIR]/out"
     90     },
     91     "infra_step": true,
     92     "name": "push [START_DIR]/skia/resources/* /cache/skia/resources",
     93     "~followup_annotations": [
     94       "@@@STEP_LOG_LINE (a] python.inline@@@@",
     95       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
     96       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
     97       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
     98       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
     99       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    100       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    101       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    102       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    103       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    104       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    105       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    106       "@@@STEP_LOG_LINE (a] python.inline@    hp = os.path.realpath(os.path.join(host, p, f))@@@",
    107       "@@@STEP_LOG_LINE (a] python.inline@    if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
    108       "@@@STEP_LOG_LINE (a] python.inline@      print \"Skipping because it is too big\"@@@",
    109       "@@@STEP_LOG_LINE (a] python.inline@    else:@@@",
    110       "@@@STEP_LOG_LINE (a] python.inline@      subprocess.check_call(['adb', 'push',@@@",
    111       "@@@STEP_LOG_LINE (a] python.inline@                            hp, os.path.join(device, p, f)])@@@",
    112       "@@@STEP_LOG_END (a] python.inline@@@"
    113     ]
    114   },
    115   {
    116     "cmd": [
    117       "python",
    118       "-u",
    119       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    120       "--json-output",
    121       "/path/to/tmp/json",
    122       "copy",
    123       "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
    124       "/path/to/tmp/"
    125     ],
    126     "infra_step": true,
    127     "name": "Get downloaded SKP VERSION"
    128   },
    129   {
    130     "cmd": [
    131       "python",
    132       "-u",
    133       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    134       "--json-output",
    135       "/path/to/tmp/json",
    136       "copy",
    137       "42",
    138       "[START_DIR]/tmp/SKP_VERSION"
    139     ],
    140     "infra_step": true,
    141     "name": "write SKP_VERSION"
    142   },
    143   {
    144     "cmd": [
    145       "adb",
    146       "shell",
    147       "cat",
    148       "/cache/skia/SKP_VERSION"
    149     ],
    150     "cwd": "[START_DIR]/skia",
    151     "env": {
    152       "BUILDTYPE": "Release",
    153       "CHROME_HEADLESS": "1",
    154       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    155       "SKIA_OUT": "[START_DIR]/out"
    156     },
    157     "infra_step": true,
    158     "name": "read /cache/skia/SKP_VERSION",
    159     "stdout": "/path/to/tmp/"
    160   },
    161   {
    162     "cmd": [
    163       "adb",
    164       "shell",
    165       "rm",
    166       "-f",
    167       "/cache/skia/SKP_VERSION"
    168     ],
    169     "cwd": "[START_DIR]/skia",
    170     "env": {
    171       "BUILDTYPE": "Release",
    172       "CHROME_HEADLESS": "1",
    173       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    174       "SKIA_OUT": "[START_DIR]/out"
    175     },
    176     "infra_step": true,
    177     "name": "rm /cache/skia/SKP_VERSION"
    178   },
    179   {
    180     "cmd": [
    181       "adb",
    182       "shell",
    183       "rm",
    184       "-r",
    185       "/cache/skia/skps"
    186     ],
    187     "cwd": "[START_DIR]/skia",
    188     "env": {
    189       "BUILDTYPE": "Release",
    190       "CHROME_HEADLESS": "1",
    191       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    192       "SKIA_OUT": "[START_DIR]/out"
    193     },
    194     "infra_step": true,
    195     "name": "rm /cache/skia/skps"
    196   },
    197   {
    198     "cmd": [
    199       "adb",
    200       "shell",
    201       "mkdir",
    202       "-p",
    203       "/cache/skia/skps"
    204     ],
    205     "cwd": "[START_DIR]/skia",
    206     "env": {
    207       "BUILDTYPE": "Release",
    208       "CHROME_HEADLESS": "1",
    209       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    210       "SKIA_OUT": "[START_DIR]/out"
    211     },
    212     "infra_step": true,
    213     "name": "mkdir /cache/skia/skps"
    214   },
    215   {
    216     "cmd": [
    217       "python",
    218       "-u",
    219       "\nimport os\nimport subprocess\nimport sys\nhost   = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n  p = os.path.relpath(d, host)\n  if p != '.' and p.startswith('.'):\n    continue\n  for f in fs:\n    print os.path.join(p,f)\n    hp = os.path.realpath(os.path.join(host, p, f))\n    if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n      print \"Skipping because it is too big\"\n    else:\n      subprocess.check_call(['adb', 'push',\n                            hp, os.path.join(device, p, f)])\n",
    220       "[START_DIR]/skp",
    221       "/cache/skia/skps"
    222     ],
    223     "env": {
    224       "BUILDTYPE": "Release",
    225       "CHROME_HEADLESS": "1",
    226       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    227       "SKIA_OUT": "[START_DIR]/out"
    228     },
    229     "infra_step": true,
    230     "name": "push [START_DIR]/skp/* /cache/skia/skps",
    231     "~followup_annotations": [
    232       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    233       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    234       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    235       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    236       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    237       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    238       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    239       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    240       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    241       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    242       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    243       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    244       "@@@STEP_LOG_LINE (a] python.inline@    hp = os.path.realpath(os.path.join(host, p, f))@@@",
    245       "@@@STEP_LOG_LINE (a] python.inline@    if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
    246       "@@@STEP_LOG_LINE (a] python.inline@      print \"Skipping because it is too big\"@@@",
    247       "@@@STEP_LOG_LINE (a] python.inline@    else:@@@",
    248       "@@@STEP_LOG_LINE (a] python.inline@      subprocess.check_call(['adb', 'push',@@@",
    249       "@@@STEP_LOG_LINE (a] python.inline@                            hp, os.path.join(device, p, f)])@@@",
    250       "@@@STEP_LOG_END (a] python.inline@@@"
    251     ]
    252   },
    253   {
    254     "cmd": [
    255       "adb",
    256       "push",
    257       "[START_DIR]/tmp/SKP_VERSION",
    258       "/cache/skia/SKP_VERSION"
    259     ],
    260     "cwd": "[START_DIR]/skia",
    261     "env": {
    262       "BUILDTYPE": "Release",
    263       "CHROME_HEADLESS": "1",
    264       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    265       "SKIA_OUT": "[START_DIR]/out"
    266     },
    267     "infra_step": true,
    268     "name": "push [START_DIR]/tmp/SKP_VERSION /cache/skia/SKP_VERSION"
    269   },
    270   {
    271     "cmd": [
    272       "adb",
    273       "shell",
    274       "rm",
    275       "-r",
    276       "/dev/shm/skia/dm_out"
    277     ],
    278     "cwd": "[START_DIR]/skia",
    279     "env": {
    280       "BUILDTYPE": "Release",
    281       "CHROME_HEADLESS": "1",
    282       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    283       "SKIA_OUT": "[START_DIR]/out"
    284     },
    285     "infra_step": true,
    286     "name": "rm /dev/shm/skia/dm_out"
    287   },
    288   {
    289     "cmd": [
    290       "adb",
    291       "shell",
    292       "mkdir",
    293       "-p",
    294       "/dev/shm/skia/dm_out"
    295     ],
    296     "cwd": "[START_DIR]/skia",
    297     "env": {
    298       "BUILDTYPE": "Release",
    299       "CHROME_HEADLESS": "1",
    300       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    301       "SKIA_OUT": "[START_DIR]/out"
    302     },
    303     "infra_step": true,
    304     "name": "mkdir /dev/shm/skia/dm_out"
    305   },
    306   {
    307     "cmd": [
    308       "python",
    309       "-u",
    310       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    311       "--json-output",
    312       "/path/to/tmp/json",
    313       "ensure-directory",
    314       "--mode",
    315       "0777",
    316       "[START_DIR]/tmp"
    317     ],
    318     "infra_step": true,
    319     "name": "makedirs tmp_dir"
    320   },
    321   {
    322     "cmd": [
    323       "python",
    324       "-u",
    325       "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n  try:\n    with contextlib.closing(\n        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n      hashes = w.read()\n      with open(sys.argv[1], 'w') as f:\n        f.write(hashes)\n        break\n  except Exception as e:\n    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n    print e\n    if retry == RETRIES:\n      raise\n    waittime = WAIT_BASE * math.pow(2, retry)\n    print 'Retry in %d seconds.' % waittime\n    time.sleep(waittime)\n",
    326       "[START_DIR]/tmp/uninteresting_hashes.txt"
    327     ],
    328     "env": {
    329       "BUILDTYPE": "Release",
    330       "CHROME_HEADLESS": "1",
    331       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    332       "SKIA_OUT": "[START_DIR]/out"
    333     },
    334     "infra_step": true,
    335     "name": "get uninteresting hashes",
    336     "~followup_annotations": [
    337       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    338       "@@@STEP_LOG_LINE (a] python.inline@import contextlib@@@",
    339       "@@@STEP_LOG_LINE (a] python.inline@import math@@@",
    340       "@@@STEP_LOG_LINE (a] python.inline@import socket@@@",
    341       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    342       "@@@STEP_LOG_LINE (a] python.inline@import time@@@",
    343       "@@@STEP_LOG_LINE (a] python.inline@import urllib2@@@",
    344       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    345       "@@@STEP_LOG_LINE (a] python.inline@HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'@@@",
    346       "@@@STEP_LOG_LINE (a] python.inline@RETRIES = 5@@@",
    347       "@@@STEP_LOG_LINE (a] python.inline@TIMEOUT = 60@@@",
    348       "@@@STEP_LOG_LINE (a] python.inline@WAIT_BASE = 15@@@",
    349       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    350       "@@@STEP_LOG_LINE (a] python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
    351       "@@@STEP_LOG_LINE (a] python.inline@for retry in range(RETRIES):@@@",
    352       "@@@STEP_LOG_LINE (a] python.inline@  try:@@@",
    353       "@@@STEP_LOG_LINE (a] python.inline@    with contextlib.closing(@@@",
    354       "@@@STEP_LOG_LINE (a] python.inline@        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
    355       "@@@STEP_LOG_LINE (a] python.inline@      hashes = w.read()@@@",
    356       "@@@STEP_LOG_LINE (a] python.inline@      with open(sys.argv[1], 'w') as f:@@@",
    357       "@@@STEP_LOG_LINE (a] python.inline@        f.write(hashes)@@@",
    358       "@@@STEP_LOG_LINE (a] python.inline@        break@@@",
    359       "@@@STEP_LOG_LINE (a] python.inline@  except Exception as e:@@@",
    360       "@@@STEP_LOG_LINE (a] python.inline@    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
    361       "@@@STEP_LOG_LINE (a] python.inline@    print e@@@",
    362       "@@@STEP_LOG_LINE (a] python.inline@    if retry == RETRIES:@@@",
    363       "@@@STEP_LOG_LINE (a] python.inline@      raise@@@",
    364       "@@@STEP_LOG_LINE (a] python.inline@    waittime = WAIT_BASE * math.pow(2, retry)@@@",
    365       "@@@STEP_LOG_LINE (a] python.inline@    print 'Retry in %d seconds.' % waittime@@@",
    366       "@@@STEP_LOG_LINE (a] python.inline@    time.sleep(waittime)@@@",
    367       "@@@STEP_LOG_END (a] python.inline@@@"
    368     ]
    369   },
    370   {
    371     "cmd": [
    372       "adb",
    373       "push",
    374       "[START_DIR]/tmp/uninteresting_hashes.txt",
    375       "/cache/skia/uninteresting_hashes.txt"
    376     ],
    377     "cwd": "[START_DIR]/skia",
    378     "env": {
    379       "BUILDTYPE": "Release",
    380       "CHROME_HEADLESS": "1",
    381       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    382       "SKIA_OUT": "[START_DIR]/out"
    383     },
    384     "infra_step": true,
    385     "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /cache/skia/uninteresting_hashes.txt"
    386   },
    387   {
    388     "cmd": [
    389       "python",
    390       "-u",
    391       "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
    392     ],
    393     "name": "get swarming bot id",
    394     "stdout": "/path/to/tmp/",
    395     "~followup_annotations": [
    396       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    397       "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
    398       "@@@STEP_LOG_END (a] python.inline@@@"
    399     ]
    400   },
    401   {
    402     "cmd": [
    403       "python",
    404       "-u",
    405       "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
    406     ],
    407     "name": "get swarming task id",
    408     "stdout": "/path/to/tmp/",
    409     "~followup_annotations": [
    410       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    411       "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
    412       "@@@STEP_LOG_END (a] python.inline@@@"
    413     ]
    414   },
    415   {
    416     "cmd": [
    417       "adb",
    418       "push",
    419       "[START_DIR]/out/Release/dm",
    420       "/cache/skia/bin"
    421     ],
    422     "cwd": "[START_DIR]/skia",
    423     "env": {
    424       "BUILDTYPE": "Release",
    425       "CHROME_HEADLESS": "1",
    426       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    427       "SKIA_OUT": "[START_DIR]/out"
    428     },
    429     "infra_step": true,
    430     "name": "push dm"
    431   },
    432   {
    433     "cmd": [
    434       "ssh",
    435       "-oConnectTimeout=15",
    436       "-oBatchMode=yes",
    437       "-t",
    438       "-t",
    439       "root (a] 192.168.1.2",
    440       "/cache/skia/bin/dm",
    441       "--resourcePath",
    442       "/cache/skia/resources",
    443       "--skps",
    444       "/cache/skia/skps",
    445       "--images",
    446       "/cache/skia/resources/images/color_wheel.jpg",
    447       "--nameByHash",
    448       "--properties",
    449       "gitHash",
    450       "abc123",
    451       "builder",
    452       "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release-All",
    453       "buildbucket_build_id",
    454       "123454321",
    455       "swarming_bot_id",
    456       "skia-bot-123",
    457       "swarming_task_id",
    458       "123456",
    459       "--key",
    460       "arch",
    461       "arm",
    462       "compiler",
    463       "GCC",
    464       "configuration",
    465       "Release",
    466       "cpu_or_gpu",
    467       "GPU",
    468       "cpu_or_gpu_value",
    469       "Cortex_A7",
    470       "model",
    471       "Chorizo",
    472       "os",
    473       "Chromecast",
    474       "--uninterestingHashesFile",
    475       "/cache/skia/uninteresting_hashes.txt",
    476       "--writePath",
    477       "/dev/shm/skia/dm_out",
    478       "--dont_write",
    479       "pdf",
    480       "--randomProcessorTest",
    481       "--threads",
    482       "0",
    483       "--ignoreSigInt",
    484       "--nocpu",
    485       "--config",
    486       "gles",
    487       "--src",
    488       "tests",
    489       "gm",
    490       "image",
    491       "colorImage",
    492       "svg",
    493       "--blacklist",
    494       "_",
    495       "svg",
    496       "_",
    497       "svgparse_",
    498       "_",
    499       "test",
    500       "_",
    501       "GrShape",
    502       "_",
    503       "image",
    504       "_",
    505       "interlaced1.png",
    506       "_",
    507       "image",
    508       "_",
    509       "interlaced2.png",
    510       "_",
    511       "image",
    512       "_",
    513       "interlaced3.png",
    514       "_",
    515       "image",
    516       "_",
    517       ".arw",
    518       "_",
    519       "image",
    520       "_",
    521       ".cr2",
    522       "_",
    523       "image",
    524       "_",
    525       ".dng",
    526       "_",
    527       "image",
    528       "_",
    529       ".nef",
    530       "_",
    531       "image",
    532       "_",
    533       ".nrw",
    534       "_",
    535       "image",
    536       "_",
    537       ".orf",
    538       "_",
    539       "image",
    540       "_",
    541       ".raf",
    542       "_",
    543       "image",
    544       "_",
    545       ".rw2",
    546       "_",
    547       "image",
    548       "_",
    549       ".pef",
    550       "_",
    551       "image",
    552       "_",
    553       ".srw",
    554       "_",
    555       "image",
    556       "_",
    557       ".ARW",
    558       "_",
    559       "image",
    560       "_",
    561       ".CR2",
    562       "_",
    563       "image",
    564       "_",
    565       ".DNG",
    566       "_",
    567       "image",
    568       "_",
    569       ".NEF",
    570       "_",
    571       "image",
    572       "_",
    573       ".NRW",
    574       "_",
    575       "image",
    576       "_",
    577       ".ORF",
    578       "_",
    579       "image",
    580       "_",
    581       ".RAF",
    582       "_",
    583       "image",
    584       "_",
    585       ".RW2",
    586       "_",
    587       "image",
    588       "_",
    589       ".PEF",
    590       "_",
    591       "image",
    592       "_",
    593       ".SRW",
    594       "--match",
    595       "~animated-image-blurs",
    596       "~blur_0.01",
    597       "~blur_image_filter",
    598       "~imageblur2",
    599       "~lighting",
    600       "~longpathdash",
    601       "~matrixconvolution",
    602       "~textblobmixedsizes_df",
    603       "~textblobrandomfont",
    604       "~bigbitmaprect_",
    605       "~DrawBitmapRect",
    606       "~drawbitmaprect",
    607       "~GM_animated-image-blurs",
    608       "~ImageFilterBlurLargeImage",
    609       "~savelayer_clipmask",
    610       "~TextBlobCache",
    611       "~verylarge",
    612       "--nonativeFonts",
    613       "--verbose"
    614     ],
    615     "env": {
    616       "BUILDTYPE": "Release",
    617       "CHROME_HEADLESS": "1",
    618       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    619       "SKIA_OUT": "[START_DIR]/out"
    620     },
    621     "name": "dm"
    622   },
    623   {
    624     "cmd": [
    625       "adb",
    626       "pull",
    627       "/dev/shm/skia/dm_out",
    628       "[CUSTOM_[SWARM_OUT_DIR]]/dm"
    629     ],
    630     "cwd": "[START_DIR]/skia",
    631     "env": {
    632       "BUILDTYPE": "Release",
    633       "CHROME_HEADLESS": "1",
    634       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    635       "SKIA_OUT": "[START_DIR]/out"
    636     },
    637     "infra_step": true,
    638     "name": "pull /dev/shm/skia/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm"
    639   },
    640   {
    641     "cmd": [
    642       "ssh",
    643       "-oConnectTimeout=15",
    644       "-oBatchMode=yes",
    645       "-t",
    646       "-t",
    647       "root (a] 192.168.1.2",
    648       "rm",
    649       "-r",
    650       "/cache/skia/bin"
    651     ],
    652     "env": {
    653       "BUILDTYPE": "Release",
    654       "CHROME_HEADLESS": "1",
    655       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    656       "SKIA_OUT": "[START_DIR]/out"
    657     },
    658     "infra_step": true,
    659     "name": "Delete executables"
    660   },
    661   {
    662     "cmd": [
    663       "adb",
    664       "disconnect"
    665     ],
    666     "cwd": "[START_DIR]/skia",
    667     "env": {
    668       "BUILDTYPE": "Release",
    669       "CHROME_HEADLESS": "1",
    670       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    671       "SKIA_OUT": "[START_DIR]/out"
    672     },
    673     "infra_step": true,
    674     "name": "disconnect"
    675   },
    676   {
    677     "cmd": [
    678       "adb",
    679       "connect",
    680       "192.168.1.2:5555"
    681     ],
    682     "env": {
    683       "BUILDTYPE": "Release",
    684       "CHROME_HEADLESS": "1",
    685       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    686       "SKIA_OUT": "[START_DIR]/out"
    687     },
    688     "infra_step": true,
    689     "name": "adb connect 192.168.1.2:5555 (2)"
    690   },
    691   {
    692     "cmd": [
    693       "python",
    694       "-u",
    695       "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['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      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n      line = line.replace(addr, addr + ' ' + sym.strip())\n  print line\n",
    696       "[START_DIR]/out/Release"
    697     ],
    698     "env": {
    699       "BUILDTYPE": "Release",
    700       "CHROME_HEADLESS": "1",
    701       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    702       "SKIA_OUT": "[START_DIR]/out"
    703     },
    704     "infra_step": true,
    705     "name": "dump log",
    706     "~followup_annotations": [
    707       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    708       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    709       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    710       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    711       "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@",
    712       "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
    713       "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@",
    714       "@@@STEP_LOG_LINE (a] python.inline@  tokens = line.split()@@@",
    715       "@@@STEP_LOG_LINE (a] python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
    716       "@@@STEP_LOG_LINE (a] python.inline@    addr, path = tokens[-2:]@@@",
    717       "@@@STEP_LOG_LINE (a] python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
    718       "@@@STEP_LOG_LINE (a] python.inline@    if os.path.exists(local):@@@",
    719       "@@@STEP_LOG_LINE (a] python.inline@      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
    720       "@@@STEP_LOG_LINE (a] python.inline@      line = line.replace(addr, addr + ' ' + sym.strip())@@@",
    721       "@@@STEP_LOG_LINE (a] python.inline@  print line@@@",
    722       "@@@STEP_LOG_END (a] python.inline@@@"
    723     ]
    724   },
    725   {
    726     "cmd": [
    727       "adb",
    728       "disconnect"
    729     ],
    730     "cwd": "[START_DIR]/skia",
    731     "env": {
    732       "BUILDTYPE": "Release",
    733       "CHROME_HEADLESS": "1",
    734       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    735       "SKIA_OUT": "[START_DIR]/out"
    736     },
    737     "infra_step": true,
    738     "name": "disconnect (2)"
    739   },
    740   {
    741     "cmd": [
    742       "adb",
    743       "kill-server"
    744     ],
    745     "cwd": "[START_DIR]/skia",
    746     "env": {
    747       "BUILDTYPE": "Release",
    748       "CHROME_HEADLESS": "1",
    749       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    750       "SKIA_OUT": "[START_DIR]/out"
    751     },
    752     "infra_step": true,
    753     "name": "kill adb server"
    754   },
    755   {
    756     "name": "$result",
    757     "recipe_result": null,
    758     "status_code": 0
    759   }
    760 ]