)]}'
{
  "log": [
    {
      "commit": "3e29e19c9ae2c1785cfff17ad67d4bde8abda2a5",
      "tree": "59630052122c3fcc4d2f9e4a88a8220b09595e49",
      "parents": [
        "da144b68f4b66ccb0c8d6e677372087be0d83889"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 03 14:24:04 2019 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 04 16:49:58 2019 +0000"
      },
      "message": "Switch testrunner.py to report times with monotonic clock\n\nBug: b/138868214\nTest: art/test/testrunner/testrunner.py --target --32 --jit --target \\\n   --verbose --ndebug -t 159 --timeout 10\nTest: art/test/testrunner/testrunner.py --target --32 --jit --target \\\n   --verbose --ndebug -t 159 --timeout 1\n\nChange-Id: I3f59154a08fd84699adfc6d774c4ec3fe2729b05\n"
    },
    {
      "commit": "da144b68f4b66ccb0c8d6e677372087be0d83889",
      "tree": "c3a40fc83dd3d9aa51795521b8cbd34405c4d630",
      "parents": [
        "358b49d2124dc8e45f492f0728028d37cfbfb979"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 03 11:57:53 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 03 13:14:47 2019 +0000"
      },
      "message": "Address syntax warnings in testrunner.py\n\nBug: N/A\nTest: manual\nChange-Id: I293d33cad3d367511cbe04a27c6de65fe6cd9ec3\n"
    },
    {
      "commit": "a86a5d162e6b59a32e8ea7991e6c8a157aca5a0a",
      "tree": "438596ce2b406fcae4cbb7427f906c26ae5814c1",
      "parents": [
        "bf8a5d8f4b0c181f38bf0f5fa270cd65140d9ff2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 30 11:03:05 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 30 21:13:33 2019 +0000"
      },
      "message": "Prevent attempts to run impossible configurations.\n\nSome configurations, such as --regalloc_gc --prebuild are\nfundamentally incompatible and will always fail. Add support for\nspecifying a list of these impossible configurations and automatically\nskipping them.\n\nTest: ./test/testrunner/testrunner.py --host -t 001-HelloWorld --all-compiler --all-prebuild\nChange-Id: I54ddac3e5c762cd9209e788fe2ab7d6b863b286c\n"
    },
    {
      "commit": "bf8a5d8f4b0c181f38bf0f5fa270cd65140d9ff2",
      "tree": "98ef51eae1c870b83ca683a14583f2526adc18e9",
      "parents": [
        "ab5f4c17a86b8c808dba862db566f0ffa1146367"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 30 10:17:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 30 21:13:33 2019 +0000"
      },
      "message": "Add --all-\u003ctype\u003e options to testrunner\n\nIt is sometimes useful to test all combinations of a subset of\noptions. This adds the ability to do so by using a \u0027--all-\u003ctype\u003e\u0027\noption that acts like passing in every flag of the given type. For\nexample passing `--all-gc` acts like passing `--gcstress --cms\n--gcverify`.\n\nTest: ./test/testrunner/testrunner.py --host --all-gc --all-compiler --host -t 001-HelloWorld\nChange-Id: I13662194b3ba9e2cd55d9ed2e2974d5f306d9b5c\n"
    },
    {
      "commit": "4e8e0a5a2a6b0404a5ecd118e647adcb50c464af",
      "tree": "c9d2578609ba1024610764c335239aa9ae62f591",
      "parents": [
        "0414e244c82ed5140b5a7626f935b548e8588195"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 29 16:28:26 2019 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 29 16:28:26 2019 +0100"
      },
      "message": "Fix vpython embedded specification\u0027s bookends in testrunner.py.\n\nTest: Rely on the ART Buildbot\nBug: 140161314\nChange-Id: I1b7279aebd83ec8d7c900d6b321e90d1c4533fe5\n"
    },
    {
      "commit": "8feeef6bf1425ca3b5f012b318ae0439984f24fc",
      "tree": "6e8ed3e0180a2575568132e927a9856a068b016d",
      "parents": [
        "4cb48c1bd359bee98a1a4c0cff475d76a3b5483a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 29 10:11:21 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 29 11:49:33 2019 +0000"
      },
      "message": "Add required vpython version tag to testrunner.py\n\nBug: 140161314\nTest: art/test/testrunner/testrunner.py -b --host -t 001-Main\nChange-Id: I0bbbebb502437c5f7254f1f8401c3a0c7052d961\n"
    },
    {
      "commit": "49484076e86b75b3449e18cc6827bd0a94ef1300",
      "tree": "011c5cb0ee53a8037c2baf79529a8ed10f9632d3",
      "parents": [
        "e09b87eb8d8c063ddaee53a70b4bc8dbf61ff66c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 28 11:03:37 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 28 11:34:21 2019 -0700"
      },
      "message": "ART: Add testrunner diagnostics for b/140161314\n\nTry to give interpreter info on import failures.\n\nBug: 140161314\nTest: art/test/testrunner/testrunner.py -b --host -t 001-Main\nTest: manual (fake exception)\nChange-Id: I9d8fd9b0dd115b2625cbf52eb1c96be70f7b4d09\n"
    },
    {
      "commit": "1ec82e562a31fbd7383555b610743d85b7b4a7d4",
      "tree": "c3330952f350174d81b6afee476183d263ecd42d",
      "parents": [
        "52699518fa40739d0e69bc8e364b7a4569872845"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 02 17:41:04 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 26 11:01:33 2019 -0700"
      },
      "message": "ART: Properly kill timed-out test\n\nThe python documentation states that a subprocess should be killed\nand waited on after timeout.\n\nTest: m test-art-host\nTest: manual\nChange-Id: Icf6233e1f8999070d2554b115d35fb1c304b1303\n"
    },
    {
      "commit": "52699518fa40739d0e69bc8e364b7a4569872845",
      "tree": "3944cfed2dd7d2242ba67d28c22ce0c538f0f990",
      "parents": [
        "9ac8e4327bd732e4b3b9b8dc6a29560013338d21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 02 17:27:47 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 26 11:01:14 2019 -0700"
      },
      "message": "ART: Take actual time on timeout in testrunner\n\nBug: 138868214\nTest: m test-art-host\nTest: manual\nChange-Id: I73bd4fd72550c86d24a48bf4a2290f25795171f1\n"
    },
    {
      "commit": "6461124331de7707f3b109cec38337d851be997e",
      "tree": "551fe08dc46d71f903244080f90df751d648adb5",
      "parents": [
        "3cb59a4e22bff5a06f5bcd1deb86e2580dd36de3"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Fri Jul 05 16:32:41 2019 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Thu Aug 08 11:06:51 2019 +0000"
      },
      "message": "Remove icu .dat file from Runtime module\n\nBug: 137009149\nBug: 130295968\nTest: device boots\nTest: m out/target/common/obj/JAVA_LIBRARIES/ahat-test-dump_intermediates/test-dump.hprof\nTest: art/build/apex/runtests.sh fails due to bug 138103882\nTest: art/tools/buildbot-build.sh\nTest: m test-art-host-gtest\nChange-Id: I0501fd6dd02dac3cf9780f5f1c0103e4b0475e1f\n"
    },
    {
      "commit": "7409b9fb679d982b4a3c790fc9711f81d68ffca3",
      "tree": "e4432b275fabb2e0e8c837e9f8f5c74f34eb2ea7",
      "parents": [
        "ef1178a0920d6f8278a07c619af552e7f20b0255"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 08 09:29:52 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 12 17:23:51 2019 +0000"
      },
      "message": "ART: Collect test times in testrunner\n\nIn verbose mode, display test time.\n\nTest: art/test/testrunner/testrunner.py -b --host -v -t 001-HelloWorld\nChange-Id: I37c251dd005257c9173e5cb214fbf996654dab83\n"
    },
    {
      "commit": "bb5b4f35e7d4cfddb9aedb4f2ea35b017650cd58",
      "tree": "c62934250a5e74f1d194eeefa9bc8c7c9ee03131",
      "parents": [
        "4a30f89d65efa9b85c34bbd7aa23ea4cd38b920d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 09 02:31:48 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 10 15:54:45 2019 +0000"
      },
      "message": "Revert \"Disable opaque JNI Ids for now.\"\n\nWe were incorrectly using a potentially out-of-date pointer to access\nclass object fields. This could cause segvs if the class object moves\nduring certain allocations relating to JNI id allocation.\n\nThis reverts commit 1be9c72dd49e7620dd76a8b9cef23d7cde0a6b01.\n\nReason for revert: Fixed issue with gcstress\nTest: ./test.py --host --debuggable --gcstress\nBug: 134162467\n\nChange-Id: I6ee7fc4485bbae6f0f1d4f4af0e8c2bc88bf4075\n"
    },
    {
      "commit": "1be9c72dd49e7620dd76a8b9cef23d7cde0a6b01",
      "tree": "28c508dde96a47fa976d06f2b4b3ba08cb02925b",
      "parents": [
        "3768276ab9ec3ede28ac27c97dd42518b0e2dcd9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 01 09:49:38 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 01 09:49:38 2019 +0100"
      },
      "message": "Disable opaque JNI Ids for now.\n\nThey fail on gcstress.\nTest: test.py --debuggable --gcstress\nBug: 134162467\n\nChange-Id: If57dd2fe6b57abd92b6a67383eeb8f8d5d8e3b2e\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "163c8aba763f40c3e36e0b3f1a10b69904b96923",
      "tree": "fe8309ab16f0495237dd5286ccae6d944ebde4af",
      "parents": [
        "76b9c695a7cee0772cb9ee7e472bbf8ce3030a73"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 05 11:40:30 2019 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 08 08:17:21 2019 +0000"
      },
      "message": "Use concurrent.futures.ThreadExecutor for testrunner threads\n\nMoves from controlling threads with a semaphore to a slightly more\nconvenient thread pool.\n\nMoves printing to be on the main thread.\n\nRemoves unnecessary thread for supervising tests.\n\nBug: 129406631\nTest: art/test/testrunner.py --dry-run (and simulate failures locally)\nChange-Id: I23244d35afa2341f1696ebc60cd009fb133ba872\n"
    },
    {
      "commit": "6f342dd00e7423bd29b79607df655e44b654166e",
      "tree": "cdd370f1e91e4e77888f5103db5a257f08554984",
      "parents": [
        "2bcea184e4934ee6681837c9e80660cfac2166c6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 27 17:15:42 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 21:38:38 2019 +0000"
      },
      "message": "Revert^2 \"Only extract zipapex once for linux-bionic-zipapex tests\"\n\nFixed issue that caused main-thread exception. Changed to using the\npython3.4 compatible subprocess API.\n\nThis reverts commit c26d9e3bffa8757f8f9bcc8798cc88f57136049e.\n\nReason for revert: Fixed issue causing tests to not run.\n\nTest: ./test/testrunner/run_build_test_target.py art-linux-bionic-x64-zipapex\nChange-Id: If6a2246a3f039411011e99cce692d5a4ff1d0e47\n"
    },
    {
      "commit": "c26d9e3bffa8757f8f9bcc8798cc88f57136049e",
      "tree": "5b1a99a9bee8bc2f120b5d286cd9431df762ee95",
      "parents": [
        "d53f60658fb0d28279919cc856a55e4b6504dabe"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 27 17:06:32 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 27 17:09:14 2019 +0000"
      },
      "message": "Revert \"Only extract zipapex once for linux-bionic-zipapex tests\"\n\nSomehow an exception in the main thread doesn\u0027t cause testrunner.py\nto exit non-zero.\n\nThis reverts commit 912cee8ab1260c5022ddb4862620d6ed17658de7.\n\nTest: None\n\nReason for revert: Python version incompatibility\n\n[\u0027/usr/local/google/buildbot/src/googleplex-android/master-art-host/art/test/testrunner/testrunner.py\u0027, \u0027--run-test-option\u003d--bionic\u0027, \u0027--runtime-zipapex\u003d/usr/local/google/buildbot/src/googleplex-android/master-art-host/out/soong/host/linux_bionic-x86/apex/com.android.runtime.host.zipapex\u0027, \u0027--host\u0027, \u0027--64\u0027, \u0027--no-build-dependencies\u0027, \u0027--host\u0027, \u0027--dex2oat-jobs\u0027, \u00274\u0027, \u0027--verbose\u0027]\nConcurrency: 40\n4150/4150 (100%) tests passed.\nException in thread Thread-1:\nTraceback (most recent call last):\n  File \"/usr/lib/python3.4/threading.py\", line 920, in _bootstrap_inner\n    self.run()\n  File \"/usr/lib/python3.4/threading.py\", line 868, in run\n    self._target(*self._args, **self._kwargs)\n  File \"/usr/local/google/buildbot/src/googleplex-android/master-art-host/art/test/testrunner/testrunner.py\", line 508, in run_tests\n    with handle_zipapex(zipapex_loc) as zipapex_opt:\n  File \"/usr/lib/python3.4/contextlib.py\", line 59, in __enter__\n    return next(self.gen)\n  File \"/usr/local/google/buildbot/src/googleplex-android/master-art-host/art/test/testrunner/testrunner.py\", line 531, in handle_zipapex\n    subprocess.run([\"unzip\", \"-qq\", ziploc, \"apex_payload.zip\", \"-d\", tmpdir]).check_returncode()\nAttributeError: \u0027module\u0027 object has no attribute \u0027run\u0027\n\nChange-Id: I33a87fc2d96b250e30e3e08c60e9197daa11e049\n"
    },
    {
      "commit": "912cee8ab1260c5022ddb4862620d6ed17658de7",
      "tree": "18278fbb659b8d9250e4732b8a5db4984878c411",
      "parents": [
        "1617f8caf200820e6831296681d49df51982d66c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 26 13:32:54 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 01:48:23 2019 +0000"
      },
      "message": "Only extract zipapex once for linux-bionic-zipapex tests\n\nWe were unzipping the zipapex for every test when running the\nart-linux-bionic-x64-zipapex tests. This could take a long time. This\nmakes us only have to unzip it a single time.\n\nTest: ./test/testrunner/run_build_test_target.py art-linux-bionic-x64-zipapex\nChange-Id: Id7cf1b6445526a950c45b74fc98208e234d3069f\n"
    },
    {
      "commit": "26a5dd6fd1d65de29ba85e4bb61d9267dd428238",
      "tree": "952cdd73cefa3be7554e35dc2e9651b3054b7c29",
      "parents": [
        "d0430bfe6e08f932fa15b159457a5430f5b3ec25"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Mar 13 15:16:35 2019 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Mar 18 16:08:05 2019 +0000"
      },
      "message": "Add support for ANDROID_TZDATA_ROOT\n\nSoon, code in the Android Core Library / ICU4C library will depend on the\nANDROID_TZDATA_ROOT environment variable being set. On device this points\nto the root of the com.android.tzdata module.\n\nUnlike ANDROID_RUNTIME_ROOT, ANDROID_TZDATA_ROOT it doesn\u0027t have to point to\nanything that exists because the code will fall back to looking in\nANDROID_RUNTIME_ROOT if it can\u0027t find the files it is looking for. Most\nof the changes in this commit are plumbing to make sure the environment\nvariable is set to benign defaults or passed through to the runtime.\n\nThis commit has been put together by looking for usages of\nANDROID_RUNTIME_ROOT and duplicating the logic.\n\nBug: 128422035\nTest: build only\nChange-Id: I2fd73fe16f5022742aaf634be158765cac8759e6\n"
    },
    {
      "commit": "2807614fcef6280c78e3987289fe345a770ca5c2",
      "tree": "e9efd9037a0ad7785f5f24ae36b37916a1988ed2",
      "parents": [
        "d7d3f6fa1870b9e9b8f58ab7854e5eeee071ba2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 10 16:39:25 2019 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 10 18:14:28 2019 +0000"
      },
      "message": "Add support for option `--android-runtime-root` to ART run-test scripts.\n\nAlso have testrunner.py honor `ART_TEST_ANDROID_RUNTIME_ROOT` and pass\nits value via `--android-runtime-root` to art/test/run-test (for\ntarget testing).\n\nThese changes are needed for the interim period where\n- we have code running on the ART Buildbot using\n  `ANDROID_RUNTIME_ROOT` to locate files on device (namely ICU code\n  looking for ICU .dat prebuilt files); and\n- the Runtime APEX is not (yet) available on all environments where\n  ART is running (namely the ART Buildbot).\n\nTest: Rely on the ART Buildbot.\nBug: 121117762\nBug: 119293618\nBug: 113373927\nChange-Id: I83bbb2442f15ed82eee3369dad1d249227bb3442\n"
    },
    {
      "commit": "d51af9e040e378d0d66b8029f002332c36bdedb9",
      "tree": "50077f7d76726f00df73823136eaecde1e8cd4a5",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:07:55 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:07:55 2018 -0700"
      },
      "message": "Make testrunner runnable from art directory\n\nWe were using a relative path to the soong_ui.bash script in\ntestrunner. This meant testrunner could only be run if you were in the\nANDROID_BUILD_TOP directory. This makes that path absolute by\nprepending ANDROID_BUILD_TOP to it.\n\nTest: ./test/testrunner/testrunner.py --host -b\nChange-Id: I9007d2de79b07bf77a6ddc6a569f553acb20f63e\n"
    },
    {
      "commit": "4519b9d28719a726c09ef8e02b00ea93ea9f6f03",
      "tree": "687ebaa5b5560017f67cc676b25c573d9aa434b0",
      "parents": [
        "a2da9b99fa1ea3d25d52da71308a623b2aae216c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 15:21:21 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 18:05:48 2018 +0100"
      },
      "message": "Make the boot image always multi-image.\n\nDeprecate the --multi-image option.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I01fd02341cb4dc4fa75a388071694b51ba0bc5f7\n"
    },
    {
      "commit": "a2da9b99fa1ea3d25d52da71308a623b2aae216c",
      "tree": "5533be23eee7c24b68b1b72272cbae3f35a708cb",
      "parents": [
        "dc3b4670b170b39a8bd6498d4de69c1513af1db2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 14:21:55 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 15:25:26 2018 +0100"
      },
      "message": "ART: Completely remove the --compile-pic option.\n\nAnd the PIC-related fields from image header.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I3787369378f12d8cd9003bebeae62830a67def33\n"
    },
    {
      "commit": "acc56ac6a33a23abbf4a9a62528e352ea28c5407",
      "tree": "e1dd4569fd5b49879ec8dfd1b5ef5204a1084407",
      "parents": [
        "4ca6cc7ddcbd568b365c428371ea9675799775af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 09 08:45:24 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 11:10:08 2018 +0100"
      },
      "message": "Introduce a \u0027baseline\u0027 variant for the compiler.\n\nImplemented as a stripped down version of the optimizing compiler,\nnot running any optimization.\n\nAdjust code to still work with expectations in code generators.\n\nbug: 111397239\n\nTest: test.py --baseline\nChange-Id: I4328283825f9a890616e7496ed4c1e77d6bcc5dd\n"
    },
    {
      "commit": "c71f38bdf7dca39a070ba25d436edcd758551f42",
      "tree": "03bc5d32f2f5e346d21b2a1b81205d7e55dc4066",
      "parents": [
        "6359e69d85bf9472f330d01a555e50c6581fb553",
        "2e956ba9368be3e7669f186e8f213aa6192c3fe8"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 09 20:50:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 09 20:50:38 2018 +0000"
      },
      "message": "Merge changes I166d5c7b,I15d5a2c2\n\n* changes:\n  Use soong_ui.bash instead of the deprecated make wrapper\n  Stop using DIST_DIR directly, use dist-for-goals\n"
    },
    {
      "commit": "ad694bf3d73379be15b1d2a4cbddafb26d6a4f73",
      "tree": "3b0d15391ab37dca28b1903e5bb1aac4824d9f17",
      "parents": [
        "e0440636201c60d9fdbde656f8a3cd4eee12d3a1"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 09 14:49:15 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 09 15:35:23 2018 +0100"
      },
      "message": "Add a `jit-on-first-use` \"compiler\" option to ART\u0027s testrunner script.\n\nThis can be used to filter tests in test/knownfailures.json.\n\nTest: art/test/testrunner/testrunner.py --jit-on-first-use\nBug: 62611253\nChange-Id: Ie45ee10b794dc9f0749ef8fb0d174cc38653c6ba\n"
    },
    {
      "commit": "2e956ba9368be3e7669f186e8f213aa6192c3fe8",
      "tree": "8a97a3b098035074eb9246c9debf5d89c718825e",
      "parents": [
        "db72e5ec7ca18282fe03bba20494b021fbdaa7c6"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 08 17:44:45 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 09 06:08:40 2018 +0000"
      },
      "message": "Use soong_ui.bash instead of the deprecated make wrapper\n\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-gtest\nChange-Id: I166d5c7b480289fbe25ba13d0f5e8593125d6160\n"
    },
    {
      "commit": "9ec8559bc2e18075cdcd9a2f09206b698d3c1993",
      "tree": "9b323f5532ff8d3cf6e10b7816c585e831cdb0d9",
      "parents": [
        "06cff4c9c057c5c702db87f5f28b211ec03713fb",
        "a497a39fe8830fe7b1c1c23b413753fe4e12923b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 03 09:28:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 03 09:28:37 2018 +0000"
      },
      "message": "Merge \"Remove patchoat.\""
    },
    {
      "commit": "a497a39fe8830fe7b1c1c23b413753fe4e12923b",
      "tree": "c1f02f404feefb94fa105a563f0e6c1146ab22b8",
      "parents": [
        "d6266f3292eab5b043262c6366ed6b8131e152c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 26 10:52:50 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 02 08:54:11 2018 +0100"
      },
      "message": "Remove patchoat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nBug: 77856493\nChange-Id: I6686ce9d23e02aa8b8ef4081b302dbd860d07718\n"
    },
    {
      "commit": "e9f61035e7077032a17d7d0e9035b6ef3995273f",
      "tree": "e24de0b760ef3848c8d405b4b7fec5a8b630778c",
      "parents": [
        "bb68fda18ef3d7ea183a322831a5afd20b6a8bff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 24 16:04:51 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:02 2018 -0700"
      },
      "message": "Prevent the JIT from loading classes in debuggable mode\n\nIn debuggable mode the timing and placement of class loads is\nobservable. This causes deopts to be placed in situations where a\nclass would be loaded by the JIT.\n\nThis has negligible impact on performance of compiled code, causing\nonly a handful of classes to be not loaded.\n\nFor example with the it.mvilla.android.fenix2 application of the\n~13000 classes loaded the jit was responsible for 19 of them.\n\nSince the jit is only responsible for a small number of class loads\nand for the class not to have been loaded by the interpreter the path\nmust be cold anyway there is no performance impact on standard paths.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py --with-agent\u003dlibjitloadd.so\u003dfatal --host\nTest: Attach libjitload.so to running processes and examine jit-load\n      counts.\n\nBug: 70838465\nBug: 73255278\nBug: 112074977\nBug: 116517081\n\nChange-Id: I030bc8116345af506e83ba78427a7fbda7a7b386\n"
    },
    {
      "commit": "3d8a78a79aaa47be68162cb3e3fb2544f9b624a3",
      "tree": "0f9790f629c798f5c371e75ae20af60fa39a3203",
      "parents": [
        "c497fca9aa25a331af6428aa0fb6b083c6292089"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 29 21:10:16 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 30 13:37:02 2018 +0100"
      },
      "message": "Revert \"Revert \"Remove OatFileAssistant::MakeUpToDate and friends.\"\"\n\nThis reverts commit baf3761013a30b8c5dc1d6179cddaeee0a764311.\n\nAlso remove the now deprecated --{no-}dex2oat option.\n\nChange-Id: I502c7011877f43f315abffa9b7d482ef13857125\nbug: 111174995\nbug: 111342996\n"
    },
    {
      "commit": "0d20d58c0d543a25b2dece1aeccd4c9984c7124c",
      "tree": "0dc566fa347060622c0aa5c4d2841a99ee1ffd10",
      "parents": [
        "ff5d955306660a6f6515967659515717076c1d87"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 12 16:16:41 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 12 16:42:19 2018 -0700"
      },
      "message": "Add missing spaces in constructing args\n\nWe were missing a few spaces in some argument strings. This could\ncause the testrunner to fail if it is used with a --run-test-option or\nwith multiple target options.\n\nTest: ./test/testrunner/testrunner.py --host --jvm\nTest: ./test/testrunner/testrunner.py --host --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\nChange-Id: I8b4330c252e2f13f4591bbeadef3532ca7b31d06\n"
    },
    {
      "commit": "2682918b0168d3f47294676547efc0ee1c7a7249",
      "tree": "572fe4f04222c452b188784ce0d5be5aef203aeb",
      "parents": [
        "74f2ccc9fad3cfd8e04d24aceba1c58ce08884dc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 11 11:36:24 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 11 23:11:06 2018 +0000"
      },
      "message": "Add support for a --run-test-option to testrunner.\n\nSometimes it is useful to send specific run-test options to every\ntest. This adds a --run-test-option argument to testrunner that will\nlet one pass any run-test options down to run-test with no\nmodification.\n\nTest: ./test/testrunner/testrunner.py \\\n        --host \\\n        --run-test-option\u003d\u0027--with-agent libtifast.so\u003dlog,MethodEntry,MethodExit\u0027 \\\n        -t 001-HelloWorld\n\nChange-Id: Ice8e5b83fce4389b7461f5284c093dd144969640\n"
    },
    {
      "commit": "9cb13a66863411e6e885fd387d7908844270f42f",
      "tree": "944bdc205adc5cdb7662a3a8aa36e2d4f16d3695",
      "parents": [
        "693c6d609fe2eb3c5cf4259dc770a5e6bfc93b7b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 13:02:02 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 20:08:10 2018 +0000"
      },
      "message": "Add debugging for b/62653020\n\nWe are seeing errors reading out/soong/build.ninja when running\nART tests.  Add a hack to copy out/soong/build.ninja to DIST_DIR\non failure so we can see the contents.\n\nTest: Manually corrupt build.ninja, run testrunner.py with and without\n      DIST_DIR set.\nBug: 62653020\n\nChange-Id: I6d83b87d56b6787a98fec8b244f224d44cb85bc1\n"
    },
    {
      "commit": "0b7e6c96ea859fa948b4a1973c5d1f17a8b9021a",
      "tree": "bfff0e4d9a4d8e7531b914ecb8bb81ea5f7639b6",
      "parents": [
        "a326807d1ac1e37798c928911777c9d7c1d7ab4d",
        "b0633b2d69b5bae42c4cf97696aa227e2a8750ef"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 25 13:34:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 25 13:34:40 2018 +0000"
      },
      "message": "Merge \"Have testrunner honor ART_TEST_CHROOT only for target tests.\""
    },
    {
      "commit": "6aa4e0d6d54fd061387f1ffc88ea2f96daad9425",
      "tree": "a32e92af207cf7158440f384a1a86b1e172fe642",
      "parents": [
        "ebf5902272613d8bb563ae312ec5ce2580a59bb7"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 25 09:39:16 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 25 09:39:16 2018 +0100"
      },
      "message": "ART: Fix run-test invocation for jvm tests\n\nAdd check in testrunner.py to conditionally add \"--compact-dex-level\".\n\nAdd check in run-test to warn if the test argument is missing to avoid\ncryptic failure.\n\nTest: art/test.py --host --jvm -r -t 526\nChange-Id: I73c6f9654656ada79553e536546464e267c66053\n"
    },
    {
      "commit": "b0633b2d69b5bae42c4cf97696aa227e2a8750ef",
      "tree": "9f763324fececf7477c7b1a571a17536b1249f31",
      "parents": [
        "e46752658eaf41c0cc818c51a3e1cd95876bac93"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 15:59:18 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 15:59:18 2018 +0100"
      },
      "message": "Have testrunner honor ART_TEST_CHROOT only for target tests.\n\nChroot-based testing is only supported on devices, and\nart/test/run-test would complain if `--host` and `--chroot` were to be\nused together.\n\nAlso have the same behavior for ART_TEST_ANDROID_ROOT, as it only\nmakes sense for target tests.\n\nTest: ART_TEST_CHROOT\u003d/data/local/art-test-chroot art/test/testrunner/testrunner.py --host\nBug: 34729697\nChange-Id: I617fbcf719d3c59dbcbd632e69bf52e3498b4cff\n"
    },
    {
      "commit": "4a1cac420b34cc23458742e0deb67116b69b93eb",
      "tree": "9f8cde8c7b94b14b5597a3c8e7b9a0e641437201",
      "parents": [
        "d804b76c0b8f9d2c94f3a8648aba26254742a1e2"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed May 23 16:23:27 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 24 09:54:59 2018 +0100"
      },
      "message": "ART: Remove jack from test\n\nTest: art/test.py --host\nChange-Id: I31b0c0d57d344f54a8c0545fd32c81a893b4ec75\n"
    },
    {
      "commit": "76cfe61b0c20f7c9d9ba9b60b188f483d81c5f68",
      "tree": "7ac27f14dedefc355c9f890d339397b8fdcb3e52",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Oct 30 13:14:28 2017 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 08 13:55:56 2018 +0100"
      },
      "message": "Support ART on-device testing in a chroot environment.\n\nThis change updates the ART test rules and scripts to allow\ninstallation and ART testing in a chroot directory on device.\n\nAll existing ART testing is supported:\n- ART gtests (with and without Valgrind).\n- ART run-tests.\n- libcore tests (with companion CL in external/vogar).\n- JDWP tests (with companion CL in external/vogar).\n\nTest: Run ART tests (gtest, run-tests, libcore tests, JDWP tests) in chroot\nBug: 34729697\nBug: 68125496\nChange-Id: I398e9bafee61eccd98d827ab8d9b8f6395aaa853\n"
    },
    {
      "commit": "cf2de16a293583932b331548e87d60603ddca4e0",
      "tree": "30dd3e4100978607be7b6a0bb126894e0112de83",
      "parents": [
        "5430e68ddee3178445536cca710412808afa3cad"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Fri Mar 30 20:18:20 2018 +0000"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Tue Apr 03 16:54:35 2018 -0700"
      },
      "message": "Revert \"Revert \"Move most art test off DX\"\"\n\nThis reverts commit 0e3a6addf60cbf006536d05aebe652e7ccddcd70.\n\nReason for revert: The failing test (036-finalizer) is fixed by\nhttps://android-review.googlesource.com/637929 .\n\nTest: run-test --gcstress 036-finalizer \u0026\u0026 run-test 651-checker-simd-minmax\n\nChange-Id: Ib5efbd4abc57b26f7dfcf73edf201d7145fe8781\n"
    },
    {
      "commit": "a90c68c3a6acb9e47ec316edfa397cb6eb0a9e45",
      "tree": "57f62b188da4c5e295ce9a843d81f9de1df2410a",
      "parents": [
        "d1ede32d56d2b6c95f94a8c67d8b9f309940d9de"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 26 14:50:24 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 28 23:22:55 2018 +0000"
      },
      "message": "Make testrunner.py --all more useful.\n\nPreviously if you used testrunner --all it would try to run all\n~800000 variants of the test you specified. Often it is much more\nuseful to specify some set of config options to be used by all tests\nbut to run all remaining configurations. This change makes so --all\nwill only add on unspecified variant-types. For example\n./test/testrunner/testrunner.py --host --32 -t 001-HelloWorld will\nrunn all ~400000 32-bit variants of test 001-HelloWorld but none of\nthe 64-bit variants.\n\nTest: ./test/testrunner/testrunner.py --host\nTest: ./test/testrunner/testrunner.py --jvm\nTest: ./test/testrunner/testrunner.py --all --host --32 --dry-run -t 001-HelloWorld\nTest: ./test/testrunner/testrunner.py --all --host --dry-run -t 001-HelloWorld\nTest: ./test/testrunner/testrunner.py --all --host --npic-test --jit --dry-run -t 001-HelloWorld\nChange-Id: I9f4033bbb85ed092ed1251faf15d5ea479602b86\n"
    },
    {
      "commit": "41b1f0ef0cf1ba3035dec395cc18b9ffe80ebe5d",
      "tree": "53f448d2f32759c8a7910ff083e8474b4293ad14",
      "parents": [
        "be0c7cfdbb2b73d6beb1284fdedb8e07766630e9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 21 11:17:12 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 22 09:50:52 2018 +0000"
      },
      "message": "Pass --runtime-option from testrunner to run-test.\n\nNote that the python argument parser does not like option\narguments starting with a \u0027-\u0027 if passed like\n  --runtime-option -Xjitthreshold:0\nso such options need to be passed with \u0027\u003d\u0027 as in\n  --runtime-option\u003d-Xjitthreshold:0\n\nTest: testrunner.py --help (manual inspection)\nTest: testrunner.py --host --jit -t 667-jit-jni-stub (OK)\nTest: testrunner.py --host --jit -t 667-jit-jni-stub \\\n      --runtime-option\u003d-Xjitthreshold:0 (2 FAILURES)\nBug: 62611253\nChange-Id: I6ebe18fe27b24989320ad963516146d12da4664f\n"
    },
    {
      "commit": "c032251c472fb491c0c0d7396bfed302606a08a6",
      "tree": "4264fd9df6738318fbdb3e78e0e18e81453d16fe",
      "parents": [
        "4bfca1cc7bf6c213b546ee20a6f2e131fca4831c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 13 10:33:52 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 13 13:23:36 2018 -0700"
      },
      "message": "Group testrunner options in --help\n\ntestrunner.py --help was not very helpful. This groups related options\ntogether to hopefully make it somewhat more understandable what each\noption does.\n\nTest: manual\nChange-Id: I0b779964ecb1cf9b6ffc0aeb81650d0d9b1cb3d3\n"
    },
    {
      "commit": "bab15064d151c513ec74ece25ac63e2ed8686e99",
      "tree": "dc99f24ca2edc16699f6bb42789b9fac2e78d89f",
      "parents": [
        "8dcb3527d416fb63f936a8fbeb7b59abfc2ac446"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 23 14:53:24 2018 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 27 16:21:35 2018 -0800"
      },
      "message": "test: Add continuous testing for run-test --jvm\n\nAdd testrunner.py --jvm flag which runs run-test --jvm.\n\nThe default is still only --host, --target, but if --jvm is specified\nby itself then only jvm tests will run.\n\nAlso change art-test-javac continuous test target to run with --jvm.\n\nThis is a pre-requisite to swapping our non-jvm test targets to build\nwith libcore instead of openjdk.\n\nBug: 72491947\nBug: 73888836\nTest: art/test/testrunner/testrunner.py -b --jvm\nTest: art/test/testrunner/testrunner.py -b --host\nTest: art/test/testrunner/run_build_test_target.py art-test-javac\nChange-Id: I114327008d57e88409d36ac6713b809e593f7802\n"
    },
    {
      "commit": "42242dd2309178fecb8b61617cf3c358e72eb0f8",
      "tree": "21696b819f95b6f3c867b17e36b3d59ca9b2a639",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 16 09:23:57 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 16 21:01:35 2018 +0000"
      },
      "message": "Add option to make testrunner ignore knownfailures.json\n\nSometimes it is useful to make testrunner run a test even if it is\nlisted in knownfailures.json. This adds a --no-skips option that does\nexactly that. If this option is passed testrunner will consider every\nvariant of every test runnable.\n\nTest: ./test/testrunner/testrunner.py --host --no-skips --redefine-stress -t 974-hiddenapi\nChange-Id: Iffc743d515819fa0a3a0f14e2da0bbf2b42673c4\n"
    },
    {
      "commit": "75a58dc390c4aa376f0596719031dfefd4e7c23c",
      "tree": "21d6ef7730469cf21c052e6ea64863599d4aea49",
      "parents": [
        "1e5b3f39ff1776fd8b7d8d7d372347a08d98781b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Feb 05 14:37:31 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Feb 05 16:03:03 2018 +0000"
      },
      "message": "ART: Fix testrunner test reporting\n\nFixes breakage when manually invoking the testrunner to reproduce a\nfailure. The test names printed and the regular expression parser did\nnot line up for the cdex option.\n\nTest: art/test/testrunner/testrunner.py test-art-host-run-test-debug-prebuild-speed-profile-no-relocate-ntrace-cms-checkjni-picimage-npictest-ndebuggable-no-jvmti-cdex-fast-710-varhandle-creation32\nChange-Id: I93a58caa76a568496361f8777e55fbe586496f3b\n"
    },
    {
      "commit": "dc757e5082da444a00aa65e465f60332d23803aa",
      "tree": "787a2259cca362ad59fb5350ea60f8fcbd469a9d",
      "parents": [
        "13a677c5554b274d3e13e058f57f0f314aa0d38d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:25:27 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 23:31:20 2018 +0000"
      },
      "message": "Fix default cdex level to be fast instead of none\n\nTo get treehugger running the tests for presubmits.\n\nBug: 63756964\nTest: manual\nChange-Id: Ie233b673cb7357b928dc2102bc6d30a66f2e009f\n"
    },
    {
      "commit": "dcd56c9116c2dc45b40b38fbb2a55c7e33a85a45",
      "tree": "d245d2156e2638f587eec14d60e927645b81b42c",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 20:30:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 08 10:56:08 2017 -0800"
      },
      "message": "Add --cdex-fast and --cdex-none variant to testrunner\n\nAdded --cdex-fast and --cdex-none variant options. These are passed\nto ART through the compact-dex-level option.\n\nBug: 63756964\nTest: test/testrunner/testrunner.py --host --cdex-fast -j40\nTest: Commented out header writing in compact_dex_writer.cc and confirmed tests fail.\n\nChange-Id: I408555b48286d2c4c5eca72e2cabe956aa1e9835\n"
    },
    {
      "commit": "09b2d5022c77a5d24d47323d513dc0b6357ffc6c",
      "tree": "a6fdf2fabf08282f12e2e5e33dc460ba8890b8f3",
      "parents": [
        "111b7d409a3f77cb0d16bc1df74a3a698795c1d1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 29 19:08:16 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 29 19:08:16 2017 -0800"
      },
      "message": "ART: Allow multiple tests to be requested\n\nAllow repeatable \"-t\" arguments for the testrunner.\n\nBug: 37118012\nTest: m\nTest: art/test/testrunner/testrunner.py -b --host\nTest: art/test/testrunner/testrunner.py -b --host -t 001-HelloWorld\nTest: art/test/testrunner/testrunner.py -b --host -t 001-HelloWorld -t 001-Main\nChange-Id: Iba2bb6de0addb5751df54c483e1a5cfb9b4d11db\n"
    },
    {
      "commit": "18085acd2430b8ccb5f397a8f3f8a81d11fa94cf",
      "tree": "104de1caf23a75ef52ed920cc67334a9672dc2f1",
      "parents": [
        "0ee89f41fa91b85d3090a43239f3eb7f7a94237d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 08 09:20:01 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 08 09:20:01 2017 +0000"
      },
      "message": "Revert \"Move ART tests to use D8.\"\n\nBreaks checker tests on arm64/arm\n\nBug: 65168732\n\nThis reverts commit 0ee89f41fa91b85d3090a43239f3eb7f7a94237d.\n\nChange-Id: I9fd14a8b01544481dadc485f51db4ff160c2733e\n"
    },
    {
      "commit": "0ee89f41fa91b85d3090a43239f3eb7f7a94237d",
      "tree": "8614351f5ccfd3869d69af8f0e487f7799b8a7ca",
      "parents": [
        "383684585824efa60350b208b92362efab3962eb"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Mon Nov 06 15:36:10 2017 -0800"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Mon Nov 06 17:30:48 2017 -0800"
      },
      "message": "Move ART tests to use D8.\n\nBecause of b/68406220, env.py is not picking soong build vars.\nThis CL should fix the issue by using USE_D8 and the workaround\nchecked into build/core/.\n\nThis CL also included build file changes to hold a few more checker\ntests to continue to use DX temporary until we finish re-writing them.\n\nBug: 65168732\nTest: art/test.py -j20 --host -b\nChange-Id: Icc487984c5a1ec4bab94b8e635566c219d0d024b\n"
    },
    {
      "commit": "535a15c6ca38844a0e480891bd38025aa4bbe5f4",
      "tree": "9fbbffc6413fa91b8d0ac64ada968d69c3a4d207",
      "parents": [
        "af52bcb7532e25331d6528c05105423312e161fd"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Nov 02 11:31:14 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Nov 02 11:34:31 2017 -0700"
      },
      "message": "Testrunner: Stop execution when a test fails with ART_TEST_KEEP_GOING\u003dfalse\n\nPreviously, the testrunner used to wait for all the existing thread to\nfinish execution which doesn\u0027t actually fit the requirement.\n\nTest: run testrunner with few failing tests\nBug: 68268743\nChange-Id: I1ad1f8c6572b4eac3c4af99caf566949aa8598e4\n"
    },
    {
      "commit": "91f55e6d951eacc06113871f072153b532197085",
      "tree": "0237a4b7978df7ec1486686a6d86b9aeab0d71aa",
      "parents": [
        "a59820dc247b220640a738ae7cb3803a4d89829c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Oct 21 12:45:26 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Oct 21 12:45:26 2017 -0700"
      },
      "message": "HACK: don\u0027t override DX when running make\n\nThe test runner shouldn\u0027t be overriding the location of DX when\nrunning make, if it wants it set in the environment it should do\nit after runing make.  For now just unset it when running make.\n\nTest: art/test/testrunner/run_build_test_target.py -j110 art-gtest\nChange-Id: Ic97b0f1edc854da4e352290ff192a0389766403a\n"
    },
    {
      "commit": "3412a00a2895b5da9eaf27098d882b0f0e4c7ddc",
      "tree": "363bd78d7a3e529f4b6a4c6c62b8ec263fd7525e",
      "parents": [
        "63ada4e178fdcaf47005c1d63a7c9d2e120b888b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 20 13:44:40 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 20 09:10:21 2017 -0700"
      },
      "message": "Revert \"Revert \"Add ability to have device-name based options\"\"\n\nThis reverts commit 63ada4e178fdcaf47005c1d63a7c9d2e120b888b.\n\nWe didn\u0027t read the right entries from the dict of device options.\n\nReason for revert: fixed issue with missing dict read\n\nTest: Add \"\u0027host\u0027 : { \u0027run-test-args\u0027 : [ \u0027--help\u0027 ] }\" and ./test.py --host\nTest: ./test/testrunner/testrunner.py --target -t 001-HelloWorld\nTest: Manual\nBug: 67649705\n\nChange-Id: Iba58dc5ff7e1b1882ab16225fc906dfb0d9b781f\n"
    },
    {
      "commit": "63ada4e178fdcaf47005c1d63a7c9d2e120b888b",
      "tree": "15afa0e8cf627f52e60737d30211ed4fe4044e8c",
      "parents": [
        "af2eee5c3f44699ce658c260998117b512cc6626"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 08:16:04 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 08:16:04 2017 +0000"
      },
      "message": "Revert \"Add ability to have device-name based options\"\n\nTests fail on fugu:\nrun-test-args: no such test directory\n\nBug: 67649705\n\nThis reverts commit af2eee5c3f44699ce658c260998117b512cc6626.\n\nChange-Id: Ief5fcdc9003f3daefa0b99c5113c8567e95e9ad9\n"
    },
    {
      "commit": "af2eee5c3f44699ce658c260998117b512cc6626",
      "tree": "ce5bae18ae46c2a23aefe7c5e6b031b1d363ebd2",
      "parents": [
        "4a6603701b217bbbd75020e1689c87c61125ef02"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 18 13:29:18 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 18 21:17:52 2017 +0000"
      },
      "message": "Add ability to have device-name based options\n\nIt is sometimes useful to add additional options in run-test for\nsepecific devices. This CL adds the ability to do that using the value\nof the \u0027ro.product.name\u0027 property. It uses this to reduce Xmx for fugu\ndevices.\n\nTest: Manual\nTest: ./test/testrunner/testrunner.py --target -t 001-HelloWorld\nBug: 67649705\nChange-Id: Ie4fff410bdd74bb5cbf0f1e64e0776cfd6ce1eca\n"
    },
    {
      "commit": "c53ade547ddde50f3f94a372a8ae1e584aaae073",
      "tree": "99e7a219d6dec4a4c639f5e42916dc4ca179f943",
      "parents": [
        "baeedfee3521c295916e3ae85afa2cb5dee7d6a5",
        "1ebe6144e9e81edc01874c1cbbad2a87402ff55e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 11 00:19:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 11 00:19:24 2017 +0000"
      },
      "message": "Merge \"Include run-test command in script failure output.\""
    },
    {
      "commit": "249726c999de97d08d22d7935e6866d66508f6e1",
      "tree": "e1e64c869d1821469b05342feefdd5bd64e2c3cc",
      "parents": [
        "1e0730a34b09bd45075f1c258baffc7a58606307",
        "93857f292ce8581ed84e195a13245cad90fe69ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 10 01:45:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 10 01:45:27 2017 +0000"
      },
      "message": "Merge \"Restrict number of testrunner jobs to be equal to # cpus.\""
    },
    {
      "commit": "93857f292ce8581ed84e195a13245cad90fe69ad",
      "tree": "0d5b2f74b94126982b658db4732dd1f7416a10db",
      "parents": [
        "7ec532fd6387a309c824f1abba466003593a685e"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Oct 09 13:47:35 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Oct 09 14:25:30 2017 -0700"
      },
      "message": "Restrict number of testrunner jobs to be equal to # cpus.\n\nIf not explicitly provided, testrunner set the concurrency to the\nnumber of available cpus.\n\nBug: 65822340\nTest: ./art/test/testrunner/run_build_test_target.py art-forcecopy -j100\nChange-Id: I9e1473e0739289e5307ae618f0fe6fe5debf720c\n"
    },
    {
      "commit": "1ebe6144e9e81edc01874c1cbbad2a87402ff55e",
      "tree": "66c58d0c2da677def04d9dd24f45e467ab51a650",
      "parents": [
        "8cdfac752808784d29185710095ad104922cd861"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 03 15:00:10 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 03 17:05:19 2017 -0700"
      },
      "message": "Include run-test command in script failure output.\n\nIt is often difficult to determine what command was actually run when\na test fails. This adds it to the output.\n\nTest: Manual\nChange-Id: I4d2932aa3f4f48038ee2a354289be6933cf25c82\n"
    },
    {
      "commit": "0afa07af28def04784678599d68b3634c36cbb47",
      "tree": "fdeb4a301ffeb336bfe955526788a81404b87dd3",
      "parents": [
        "8cdfac752808784d29185710095ad104922cd861"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Tue Oct 03 16:56:30 2017 -0700"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Tue Oct 03 16:57:29 2017 -0700"
      },
      "message": "Use D8 based the default in build var.\n\nChange-Id: I94dd97dcf0ada9a600ea7de9f3faeb6561971cf0\n\nTest:  art/test.py --host  -b -r  -t 911-get-stack-trace\n"
    },
    {
      "commit": "42ea83b55f963e42dae11b7b59a5fa2ed3e3ed10",
      "tree": "29aff4668ea276bb6ae09ddd83ccee36c7d4364d",
      "parents": [
        "5b294caa8d406badf2ed99dda68483736d93da22"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Sep 25 21:05:57 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Sep 26 23:44:57 2017 +0000"
      },
      "message": "Provide a way to run all the configurations of run-test\n\nTest: ./art/test/testrunner/testrunner.py --all -t 001-H --dry-run\nBug: 66924767\n\nChange-Id: I50c1ad12f3cf1e220c4e5fb912c4a847fe885468\n"
    },
    {
      "commit": "5b294caa8d406badf2ed99dda68483736d93da22",
      "tree": "5f4544509f12b5b1fe982324f80bd0c1ffe55364",
      "parents": [
        "b2c45f802cdf3fd947d0e4181cee6a2f1c21c619",
        "d0358f80f84a3b1cc450137feaaaa5c2717adab5"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Sep 26 23:44:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 26 23:44:04 2017 +0000"
      },
      "message": "Merge \"Remove legacy make env variables\""
    },
    {
      "commit": "b2c45f802cdf3fd947d0e4181cee6a2f1c21c619",
      "tree": "cbe2d32a83710610b5d576db90fb5ef121d2070c",
      "parents": [
        "2dc2bcc09aff444fad4d0c0ae12458bde5716699",
        "85853956da4fe07c636f38df12884abc404637d4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 26 22:37:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 26 22:37:31 2017 +0000"
      },
      "message": "Merge \"Testrunner: Refactor to remove duplication of variant types\""
    },
    {
      "commit": "d0358f80f84a3b1cc450137feaaaa5c2717adab5",
      "tree": "a4670cfdac166f94e83abbe82d0b5cbd8447cc98",
      "parents": [
        "85853956da4fe07c636f38df12884abc404637d4"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Sep 25 20:57:32 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Sep 26 22:12:02 2017 +0000"
      },
      "message": "Remove legacy make env variables\n\nThese are rarely used and some of the newly added variants\nare also missing the support. To keep the consistency, removing the\nsupport for the others as well.\n\nTest: ./art/test/testrunner/testrunner.py\nChange-Id: If80718803f44744525404f08f4aa8d1461d88655\n"
    },
    {
      "commit": "85853956da4fe07c636f38df12884abc404637d4",
      "tree": "0b18750840b6b40898105dc7906b2fdb54540ab4",
      "parents": [
        "208dd6076bdddcb04afb0397e4d4708f44a5dd60"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Aug 29 16:26:21 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Sep 26 13:52:09 2017 -0700"
      },
      "message": "Testrunner: Refactor to remove duplication of variant types\n\nTest: manual\nChange-Id: I048d927ca8c9a6beeecdfb4586ead82ac765468c\n"
    },
    {
      "commit": "6fdc1b671e089e52abca05b58fb8026a3a2d4701",
      "tree": "b83e266e0ecdd257c3e8951402789901ec743d8d",
      "parents": [
        "91842aebfa418f5efad8933a9d79db097f079246"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 18 11:33:56 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 22 09:50:41 2017 -0700"
      },
      "message": "Updated tests skips for jvmti/redefine stress.\n\nAlso added support for tests skips to be regex patterns so that we\ndon\u0027t need to manually add every checker test to the list of skips.\n\nTest: ./test.py --host -j50 --redefine-stress\n\nChange-Id: I87f14bf16b2e4dee4c6c6a01a34f5b2191dfbad1\n"
    },
    {
      "commit": "981d99c84e458d835f8417293389ca4d45fa5242",
      "tree": "a24a28bdb970abf84c036ec455c19a651ef0ff3f",
      "parents": [
        "70f94cace70be42861ba0a433cfe4bdf6c892f7c"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Aug 17 14:11:08 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Aug 29 10:11:22 2017 -0700"
      },
      "message": "Testrunner: Added an option to set # dex2oat-jobs for each test\n\n--dex2oat-jobs\n\nTest: test/testrunner/testrunner.py -j64 --dex2oat-jobs 15\nTest: test/testrunner/testrunner.py -j64\nBug: 64686163\nChange-Id: I2e41605b35392cbfb4e85d472cb901a766a3081e\n"
    },
    {
      "commit": "186d3219ca2ad450f227ac704282be735c202500",
      "tree": "5f9665e7b3299f911a2a305e17c5e678cdd51c49",
      "parents": [
        "ba0903b6f2c53befc1a33cce07e54e6fdb4f4d8a"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Jul 21 01:20:57 2017 +0000"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Jul 21 01:20:57 2017 +0000"
      },
      "message": "Revert \"Set timeout for testrunner in go/ab\"\n\nThis reverts commit ba0903b6f2c53befc1a33cce07e54e6fdb4f4d8a.\n\nChange-Id: Ia56e6d4a4a9187f495af2e5f1e9bd9b1e40d7a43\n"
    },
    {
      "commit": "ba0903b6f2c53befc1a33cce07e54e6fdb4f4d8a",
      "tree": "477d605ac5e26b3cecfdabf82f16b0af8a27a158",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Jul 17 17:45:36 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Jul 20 17:55:59 2017 +0000"
      },
      "message": "Set timeout for testrunner in go/ab\n\nWith this, we will be able to capture timing info of the tests.\n\nTest: ./art/test/testrunner/testrunner.py\nChange-Id: I57131c8e02f5ac92759a9c4977c2ca61b15b43e1\n"
    },
    {
      "commit": "c38c3699b8d91c837c0e590a618aeb4860eed5cc",
      "tree": "83e300a8f9b4c065e5467f5473e25bb2451481cc",
      "parents": [
        "a26e349b960a7b4c49929a5c4bcaff56e79fbe73"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 27 15:45:14 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 28 13:48:19 2017 -0700"
      },
      "message": "Add JVMTI breakpoint and SingleStep tests\n\nTests for functionality related to the can_generate_single_step_events\nand can_generate_breakpoint_events jvmti capabilities.\n\nBug: 62821960\nTest: ./test.py --host -j40\nTest: ./test/run-test --host --jvmti-step-stress 001-HelloWorld\nTest: ./test/run-test --host --jvmti-step-stress 914\nChange-Id: Id2a4db5a6de3a97726f03f5e735c2bb77dafe4ca\n"
    },
    {
      "commit": "43e935dfd2d16c6a1a2d120ca6b99ffabd064239",
      "tree": "c5d08d693bdbbb89a9c192d79f37a3e4150ce43d",
      "parents": [
        "7c95849fb89ccc49d601a34d09cb629f3feb4116"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 19 15:40:40 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 19 15:49:18 2017 -0700"
      },
      "message": "Add field-access/modification to ti-stress.\n\nThese tests stress jvmti FieldAccess and FieldModification.\n\nTest: ./test/testrunner/testrunner.py --host --field-stress -j40\nChange-Id: Ie2ea91e165beed73f14e8aff0adb137becdccd01\n"
    },
    {
      "commit": "b7edcda968bb0cbaa69a3ad387fcd3194f5612be",
      "tree": "50748aac195d20a7e8f6d59a6e499f3fe69418de",
      "parents": [
        "049f2a58ea9276dfd162760271ad443570f2e660"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 27 13:20:31 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 09 10:54:02 2017 -0700"
      },
      "message": "Add method tracing JVMTI callbacks\n\nAdd MethodEntryHook and MethodExitHook callbacks and associated\ncapabilities.\n\nSplit --jvmti-stress option in run-test into --jvmti-trace-stress and\n--jvmti-redefine-stress to test each different component.\n\nNB 3 differences from RI found:\n  1) RI will call methodExitHook again if the method exit hook throws\n     an exception. This can easily cause an infinite loop and the test\n     is specifically tweaked to prevent this from happening on the RI.\n  2) RI always includes the method being exited in the stack trace of\n     errors thrown in the hooks. In ART we will not include the method\n     if it is native. This is due to the way we call native methods\n     and would be extremely difficult to change.\n  3) The RI will allow exceptions thrown in the MethodEnterHook to be\n     caught by the entered method in some situations. This occurs with\n     the tryCatchExit test in 989. In ART this does not happen.\n\nBug: 34414073\nTest: ./test.py --host -j40\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 988\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 989\nTest: lunch aosp_angler-userdebug; \\\n      m -j40 droid build-art \u0026\u0026 \\\n      fastboot -w flashall \u0026\u0026 \\\n      ./test.py --target -j4\n\nChange-Id: Iab229353fae23c2ea27c2b698c831627a9f861b1\n"
    },
    {
      "commit": "0dd7e852c5bc8421804dee6ba0f207f9c705e618",
      "tree": "4737b74331d253e7cbbb430cb6eabe8ea05678f3",
      "parents": [
        "1dfa89847acf85fe68ac5dbef43993ecec07948d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 24 21:44:23 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 24 21:44:23 2017 -0700"
      },
      "message": "ART: Add simple failure list to tail of testrunner output\n\nAfter repeating the output of failed tests, print the sorted list\nof failed test configurations. The list is separated from the full\noutput by a separator line.\n\nBug: 37116837\nTest: m test-art-host\nTest: manually fail test\nChange-Id: I2a206fba47db2626d390bb60c70b843f56a1b987\n"
    },
    {
      "commit": "8fd2694aa1103911baf32eb05813cc11ab00ef4b",
      "tree": "dc4676ee04c436286b3f8dc1046b8c0ec7062e14",
      "parents": [
        "1a9a9e363b37dd9ff008a0664e7f54431b670e0b"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue May 09 11:30:47 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue May 09 21:59:46 2017 +0000"
      },
      "message": "Testrunner: Fix concurrecy for --target\n\nPopen was returning bytes instead of string which was causing the\nlogic of extracting out concurrency for the target device to break.\nNow, the output of the Popen will be converted to string and regex\nmatching is used instead of string split to better handle the case\nwhen the input string doesn\u0027t follow the pattern.\n\nTest: ./art/test/testrunner/testrunner.py --target\nBug: 38130322\n\nChange-Id: I6c2f3070e88e0cbd80a61380f6c4f714e8886b3c\n"
    },
    {
      "commit": "b4949f536d63eb5c9e6654a86a34488807ef3665",
      "tree": "e661e72a916009a39e1d6190a2d50f0cfa466cf1",
      "parents": [
        "3650acb134b4e68ba3f190772b02105f74081bf2"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon May 08 13:52:46 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon May 08 13:52:46 2017 -0700"
      },
      "message": "Testrunner: Fix --gdb issue\n\nTestrunner was eating up the output of gdb.\nWith the change, it will print the entire run-test script output\nwith --gdb.\n\nTest: ./art/test/testrunner/testrunner.py --gdb -t 001-H\n\nChange-Id: I35254d0a67380946e1f033ec2a46a6bf272d4adc\n"
    },
    {
      "commit": "8889a8974457792450df4fc539c5dcbf7edd895f",
      "tree": "ec696f918108822da5d75ecb0edabf23fa9a26a8",
      "parents": [
        "06660db82d6b3d59080584431addf3797a468a70"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 24 16:09:15 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 24 16:46:48 2017 -0700"
      },
      "message": "testrunner: Forward --build-with-javac-dx to run-test\n\nWhen setting ANDROID_COMPILE_WITH_JACK\u003dfalse,\nmake testrunner.py invoke run-test build scripts with javac+dx.\n\nThis allows most of the tests to build (and pass) with javac/dx\ninstead of jack. All failing tests are blacklisted.\n\nKnown issues:\n* Any tests using InvokeDynamic will fail (need desugar support).\n* Any tests with USE_JACK\u003dtrue will fail (don\u0027t have bin/jack).\n\nBug: 37636792\nBug: 36902714\nChange-Id: Ib427197add5a1dd9b134a83c25d989fd518b2a64\n"
    },
    {
      "commit": "8f2c6d479aeda3165c4f54c1076ec7ac335fccc7",
      "tree": "24867ac3b0ea940099038c5b8d18966b93188e0c",
      "parents": [
        "0ecb236aedb3debd0d000fb219a75e39879549a2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 10 16:27:35 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 12 14:42:35 2017 -0700"
      },
      "message": "run-tests with jvmti-stress configuration\n\nAdds a jvmti-stress mode to our run-tests. This mode runs our test\nsuite with every class-load being intercepted and undergoing\nredefinition.\n\nTest: DEXTER_BINARY\u003d\"/path/to/built/dexter\" \\\n      ./testrunner/testrunner.py --host --jvmti-stress -j40\n\nChange-Id: I898e5cffea42a203aa4c45981b48baf8dc64fbb6\n"
    },
    {
      "commit": "6b61c80e2cb3ccfb40af44c150db9df2749be996",
      "tree": "e23f9f2f589909e17acf259d98df7c4ee7035c8e",
      "parents": [
        "ef6787bd892b55588ebb2835cc3a3bc4e9e08d04"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 03 14:33:22 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 10 10:02:20 2017 -0700"
      },
      "message": "testrunner/env.py - Run from any directory\n\nenv.py will calculate ANDROID_BUILD_TOP relative to where its located,\nif it wasn\u0027t already set.\n\nThis enables \u0027run_build_test_target\u0027 to successfully run even if\nbuild/envsetup.sh was not run first.\n\n(also rename env.py\u0027s members to have the private naming convention,\nas they are not meant to be exposed to other modules)\n\nChange-Id: I236c6005d56fa1a155c6eb104936e3e010a169de\n"
    },
    {
      "commit": "2679e49d2aa8a73b5b1b49eaa0b78d46e40f5cba",
      "tree": "d7ee4738e49ac59220ced4f934a9a2756eec780e",
      "parents": [
        "6bca1c6389bb002d44f1c0cabf7641de8c935c4b"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 06 07:47:59 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 06 07:53:48 2017 +0200"
      },
      "message": "Testrunner: Fix output message\n\nTest: ./testrunner.py --target -j1 --optimizing --timeout 1 -t 001\n\nChange-Id: I5028b62ee333773dc2a6d2a0a374cef8d696e169\n"
    },
    {
      "commit": "002b9314d0e432ecc85e43d8fe800e375a33cebb",
      "tree": "9748662da208511ec41c9fa7147b3227c9fa43a5",
      "parents": [
        "f8d00ff206e33ff66fcabcf75d6b5bbe30cddb98"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 27 16:23:08 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 28 13:00:13 2017 -0700"
      },
      "message": "Incorporate random profile tests into run-test.\n\nUses profman to generate random profiles to pass into run-test.\nAdds a new COMPILER_TYPE \"speed-profile\" to the build.\n\nBug: 36107940\nTest: mm test-art-host\nChange-Id: I00463f59ccbd9ffa4ddff097314374aede0d47c7\n"
    },
    {
      "commit": "cd29b3b2b2f5a7bea34c870fc18cf39bb0816004",
      "tree": "60b3690241227bd3fef5c154f46d87f1a815c5e4",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6",
        "3092c6e98af27c57d26f7c119833fe41f1f489e9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 27 22:40:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 27 22:40:39 2017 +0000"
      },
      "message": "Merge \"Testrunner: Fix output parsing issue\""
    },
    {
      "commit": "c64fb4d48a39abc63db1aa6f62bf7ba6c0c7935e",
      "tree": "93672e30ae21dd2a5e8a677af4213d4b7b80fc4b",
      "parents": [
        "b20a9da907360d524119bfeb606d3853800ca524",
        "29f8968a5cf3b75282e3faf777eb675868ebc9db"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 27 19:02:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 27 19:02:09 2017 +0000"
      },
      "message": "Merge \"Testrunner: Temporarily fix long Dex File name issue\""
    },
    {
      "commit": "3092c6e98af27c57d26f7c119833fe41f1f489e9",
      "tree": "15328b332f802862f1c0d09a035a059deae4ff17",
      "parents": [
        "3b8adf50f6e634390a31027bdb0a22a35b7a0384"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Mar 24 16:19:48 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Mar 27 10:26:25 2017 -0700"
      },
      "message": "Testrunner: Fix output parsing issue\n\nAndroid build system determines failure info in the build log\nby looking for a line starting with \"FAILED: \".\n\nThe new format of the testrunner makes sure that the build system\nis able to parse the error from the log.\n\nTest: ./art/test.py -r -t 00\nChange-Id: Iab29f254f600d4c3ee74cae2675da3a624e724ef\n"
    },
    {
      "commit": "29f8968a5cf3b75282e3faf777eb675868ebc9db",
      "tree": "68a7ac6ef6a8548a36713d788fa2eb1337c65a65",
      "parents": [
        "5bcc95b9863202c04e553cdccadf5e68f3a1e71f"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Mar 24 14:44:10 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Mar 24 23:35:39 2017 +0000"
      },
      "message": "Testrunner: Temporarily fix long Dex File name issue\n\nInstead of passing long test names, it passes a directory with shorter name.\n\nBug: 36039166\nTest: TMPDIR\u003d/usr/local/google/home/shubhamajmera/aosp/tmp1 \\\n      TEMP\u003d/usr/local/google/home/shubhamajmera/aosp/tmp1 \\\n      TMP\u003d/usr/local/google/home/shubhamajmera/aosp/tmp1 \\\n      ./art/test.py \\\n      -t test-art-host-run-test-debug-prebuild-interpreter-relocate-npatchoat-ntrace-cms-checkjni-picimage-npictest-ndebuggable-201-built-in-except-detail-messages64 \\\n      -r\n\nChange-Id: Id361e130301a23cd0c0d10a16cdd0dc48882c22b\n"
    },
    {
      "commit": "fc01c0ff87170ac2da9fe981bacabdce078f563e",
      "tree": "ca1135c0b95e7ef10dd84a733f72c06769349c6d",
      "parents": [
        "0bbb750f6ff9a52bc4649995fc78ebea87e31dd1",
        "22499e227306852854e19dad3f4bcbc05acbfcdf"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Mar 24 15:16:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 24 15:16:21 2017 +0000"
      },
      "message": "Merge \"Testrunner: Print colored text only when printing on terminal\""
    },
    {
      "commit": "22499e227306852854e19dad3f4bcbc05acbfcdf",
      "tree": "1fbc2ff812b3f305f84808fd8c57d84959bc44ea",
      "parents": [
        "f633fb0f1b959410dbb7ce114e203aba1cfa4059"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Mar 22 18:33:37 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Mar 23 22:55:32 2017 +0000"
      },
      "message": "Testrunner: Print colored text only when printing on terminal\n\nTest: ./art/test/testrunner/testrunner.py\nChange-Id: Ica9701d6acd459d47fb63a722234fa17b141c33f\n"
    },
    {
      "commit": "d38959a2060af51957e1078b4941c34e2d38e00d",
      "tree": "3b7988d188755b3d3b9e1213431fb7ac9da3d15a",
      "parents": [
        "b8006e60d86fd11cc45ae2868bc28bc939808279",
        "4a5a162abe6b1bdda501726f0bc50e917cd20a56"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Mar 23 22:33:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 23 22:33:37 2017 +0000"
      },
      "message": "Merge \"Remove test logic from Android.run-test.mk\""
    },
    {
      "commit": "4a5a162abe6b1bdda501726f0bc50e917cd20a56",
      "tree": "39027cbd73b2f87261688d3e0c7be0a366ad0e49",
      "parents": [
        "f633fb0f1b959410dbb7ce114e203aba1cfa4059"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Mar 22 10:07:19 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Mar 23 10:47:16 2017 -0700"
      },
      "message": "Remove test logic from Android.run-test.mk\n\nAs python testrunner replaces it.\n\nThis change removes the following targets:\ntest-art-host-run-test-[variant]\n\nThe following targets are still supported:\ntest-art-host-run-test\ntest-art-target-run-test\ntest-art-run-test\n\nEach of the above targets invoke the new testrunner.\nThey don\u0027t pass any concurrency value to the testrunner\nand the testrunner itself decides the concurrency\ndepending upon the type of tests.\n\nTest: make -j test-art-host-run-test\n      make -j test-art-target-run-test\n      make -j test-art-run-test\n      ./art/test/testrunner/testrunner.py --host\n      ./art/test/testrunner/testrunner.py --target\n\nChange-Id: I64a87d0f2e62c29b4d9c14527f9a83810ae7edc7\n"
    },
    {
      "commit": "300c09b97a72a24b72bf925d4abc489af8465dee",
      "tree": "7cc47a0e7ebed34749a1cb0da3cf297ef258ae51",
      "parents": [
        "f633fb0f1b959410dbb7ce114e203aba1cfa4059"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 22 12:26:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 22 12:26:32 2017 +0000"
      },
      "message": "Fix bot breakages.\n\nbug:36169180\ntest: testrunner.py -b\nChange-Id: Ibfe035d5d7fb18d95d4b5a32e1e68967f1889bdd\n"
    },
    {
      "commit": "fe79349fc136e219ce72908fd3b3ead38bc019b7",
      "tree": "8701d3a2d38c08f6e305e3b444806d7bb4ba5a34",
      "parents": [
        "9e2a1cadf7fa7959343a9b201392eaa6e50dcdd9"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Mar 16 13:31:35 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Mar 17 14:23:46 2017 -0700"
      },
      "message": "Testrunner: Add timeout support\n\nBug: 36051655\nTest: manual\nChange-Id: I7117b1e23870b2a417bb5cee62efff51d85a95a5\n"
    },
    {
      "commit": "14de5c46174ce3674a93e75523516c5ce6c20905",
      "tree": "e19951555fd07bc97143aacc254649b6c1f50415",
      "parents": [
        "ed883a11b8cd7f3712bd30fca1e2b0fb641bff63"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Mar 13 10:51:14 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Mar 16 20:50:19 2017 +0000"
      },
      "message": "Add verification of knownfailures in the testrunner\n\nAdd verification checks in testrunner for\nknownfailures entries.\nRemoved 554-jit-profile-file, 555-checker-regression-x86const entries,\nas it doesn\u0027t exist anymore.\n\nAlso, unified the format of entries to use tests for all the\ncases.\n\nBug: 36164293\nTest: ./art/test/testrunner/testrunner.py --host -64\n(cherry-picked from commit 2a0e16d09c6888b646402582d909467b11e445c0)\n\nChange-Id: I8dbe18dec952150ede96a248e9639824fc004430\n"
    },
    {
      "commit": "70b21bdba7237d83e7f9567a2b29feaacb84fabf",
      "tree": "b0da50bdcbc5d5e47b94adf368295dd00c6c1b58",
      "parents": [
        "31c6ea571197d227fa62ee563461f35ec10ca838"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 10:18:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 10:21:58 2017 +0000"
      },
      "message": "Run all \u0027compiler\u0027 variants by default.\n\nMaking sure our presubmits catch more potential errors.\n\ntest: testrunner, test-art-host\nChange-Id: I72236c141d801c0210e863a01499a51f9623f3f7\n"
    },
    {
      "commit": "cbf5628a345c98aff937121fc87f228c653af1c6",
      "tree": "60c6bc84953ad3eb6d23f443a48189a9ad63b576",
      "parents": [
        "cac55a12d455efeeb928b6c5629dae4636249e56"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Mar 13 09:54:23 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Mar 13 10:03:56 2017 -0700"
      },
      "message": "Testrunner: Print information about the total tests run\n\nBug: 35985100\nTest: manual\nChange-Id: I879637e8c06ca401cd2a9c10111b4408300a7fcd\n"
    },
    {
      "commit": "b9d09ca32ac2cdd257cb992691add2bda3c0d782",
      "tree": "3ad6d0bdf68140ebb2e45d8dda32d504c02d598e",
      "parents": [
        "43be2a8bd53b32b382fe154f0cfe6fdb98b6786f"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Mar 07 10:45:05 2017 -0800"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Mar 07 10:56:26 2017 -0800"
      },
      "message": "Allow test runner to build master-art-host targets\n\nWith --build-target \u003ctarget-name\u003e, where target-name is a run-test\ntarget on master-art-host, testrunner setup environment and runs the\ntests for the target.\n\nTest: manual\nChange-Id: I17d674319283f2c455742df63e8fddb277d9bb31\n"
    },
    {
      "commit": "652aa2ee4d358e1473c91673d4f94012112cbf54",
      "tree": "1b9b664b9c07d59151f26b5e8afe22ae6300b0aa",
      "parents": [
        "977c5104711c8730a22b17424e64de43d9c7ebdd",
        "9b6b13e455c06c7e6e72046303b42ee35468cb1f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 28 00:05:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 28 00:05:43 2017 +0000"
      },
      "message": "Merge \"Make testrunner use an environment variable to control building.\""
    },
    {
      "commit": "9b6b13e455c06c7e6e72046303b42ee35468cb1f",
      "tree": "a60d7497bbe4c6078b317f4aa344dbbf8241b05f",
      "parents": [
        "fc5d8c28e5265634aeeb2f255dc8d5747e2919ee"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 22 11:46:50 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 27 13:36:57 2017 -0800"
      },
      "message": "Make testrunner use an environment variable to control building.\n\nIf it sees ART_TEST_RUN_TEST_BUILD\u003dtrue then it will build\ndependencies before runnning tests by default.\n\nTest: m clean \u0026\u0026 \\\n      ART_TEST_RUN_TEST_BUILD\u003dfalse \\\n      ./test/testrunner/testrunner.py --verbose --host -j40 -b;\n      # Observe that it calls make\nTest: m clean \u0026\u0026 \\\n      ART_TEST_RUN_TEST_BUILD\u003dtrue \\\n      ./test/testrunner/testrunner.py --verbose --host -j40 \\\n      --no-build-dependencies;\n      # Observe that it does not call make\nTest: m clean \u0026\u0026 \\\n      ART_TEST_RUN_TEST_BUILD\u003dfalse\\\n      ./test/testrunner/testrunner.py --verbose --host -j40;\n      # Observe that it does not call make\nTest: m clean \u0026\u0026 \\\n      ART_TEST_RUN_TEST_BUILD\u003dtrue \\\n      ./test/testrunner/testrunner.py --verbose --host -j40;\n      # Observe that it calls make\nTest: m clean \u0026\u0026 \\\n      ./test/testrunner/testrunner.py --verbose --host -j40;\n      # Observe that it does not call make\n\nChange-Id: Iedd9e5be42b0977b177c4c4e7f9a4805387d4535\n"
    },
    {
      "commit": "c14311cfbfff936fc82af35c04a863adbd431618",
      "tree": "384e9620f370bc12154b6e2660f3d325cd5120bd",
      "parents": [
        "1883c6df11e93139f1b2923091c5771f5656d894"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 23 17:02:46 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 23 17:02:46 2017 -0800"
      },
      "message": "Fix testrunner.py reporting\n\nBad indentation meant we wouldn\u0027t print status updates if the terminal\nis wide enough to print the entire target name.\n\nTest: with a wide terminal ./test/testrunner/testrunner.py --host -j48\nChange-Id: I7e618a25e42fe2d5ac740565afec201265e47ecb\n"
    }
  ],
  "next": "bbce11ce74746d54e86a0eec1a2a735955f1afa6"
}
