)]}'
{
  "log": [
    {
      "commit": "4c1002ad86307d5511ce9bef30b703bbf7a26816",
      "tree": "946778edbc160b0c3ed9df33e877caaa69f26b39",
      "parents": [
        "da7d0e60dd28ede70f80b18c20d9658ebf8a0f76"
      ],
      "author": {
        "name": "Chris Masone",
        "email": "cmasone@google.com",
        "time": "Mon Jun 30 16:05:03 2025 -0700"
      },
      "committer": {
        "name": "Chris Masone",
        "email": "cmasone@google.com",
        "time": "Tue Jul 01 16:02:12 2025 -0700"
      },
      "message": "[mobly] Exit non-zero on signals.TestAbortAll\n\nPer https://github.com/google/mobly/issues/960 Mobly incorrectly exits\neither 0 or 1 when a test raises signals.TestAbortAll -- depending on\nwhether any previous tests have failed or not. Instead of exiting 1 in\nthe case of all tests being aborted, like any other failure, exit with\na special code.\n\nThere aren\u0027t a lot of standard codes in use, but some internal google\ndocs suggest 40 for generic retryable errors. So use that.\n\nBug: b/425675837\nChange-Id: Iae58f6c896df2cc3d93ca9c51a84513dcd82db34\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1312367\nReviewed-by: Prashanth Swaminathan \u003cprashanthsw@google.com\u003e\n"
    },
    {
      "commit": "da7d0e60dd28ede70f80b18c20d9658ebf8a0f76",
      "tree": "503737c116bd2d49057bdea825055ea1c8395162",
      "parents": [
        "2c9e064293769edb0e956272ac4393c1cd55de52"
      ],
      "author": {
        "name": "Chris Masone",
        "email": "cmasone@google.com",
        "time": "Mon Jun 30 14:54:03 2025 -0700"
      },
      "committer": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Mon Jun 30 14:54:33 2025 -0700"
      },
      "message": "Revert \"[mobly] Exit non-zero on signals.TestAbortAll\"\n\nThis reverts commit cf1fd01dd36b06bc06deb42b2189d3db4c28f70e.\n\nReason for revert: Possibly causing b/427475109\n\nOriginal change\u0027s description:\n\u003e [mobly] Exit non-zero on signals.TestAbortAll\n\u003e\n\u003e Per https://github.com/google/mobly/issues/960 Mobly incorrectly exits\n\u003e either 0 or 1 when a test raises signals.TestAbortAll -- depending on\n\u003e whether any previous tests have failed or not. Instead of exiting 1 in\n\u003e the case of all tests being aborted, like any other failure, exit with\n\u003e a special code.\n\u003e\n\u003e There aren\u0027t a lot of standard codes in use, but some internal google\n\u003e docs suggest 40 for generic retryable errors. So use that.\n\u003e\n\u003e Bug: b/425675837\n\u003e\n\u003e Change-Id: I359f68a53eec703c85ea14df2d9508da74387cc8\n\u003e Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1307184\n\u003e Reviewed-by: Prashanth Swaminathan \u003cprashanthsw@google.com\u003e\n\nBug: b/425675837\nChange-Id: Ic4c86622be4940526e2c2e92179091afb66fcf6b\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1312365\nReviewed-by: RubberStamper 🤖 \u003candroid-build-ayeaye@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "2c9e064293769edb0e956272ac4393c1cd55de52",
      "tree": "67da08acc337bc5ac9b2f023c199954e88e62689",
      "parents": [
        "cf1fd01dd36b06bc06deb42b2189d3db4c28f70e"
      ],
      "author": {
        "name": "Cole Alban",
        "email": "colealban@google.com",
        "time": "Tue Jun 24 16:11:33 2025 -0400"
      },
      "committer": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Tue Jun 24 16:52:27 2025 -0700"
      },
      "message": "[mobly] Remove `noheaders` flag\n\nThe version of `ps` that the docker images use do not support this flag.\nThis change removes the usage of the flag and just manually strips the\nfirst line instead.\n\nTest: Used fx test-remote\nBug: None\nChange-Id: I76f990451057980473308d72dcdee3054eb1a4fe\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1308124\nReviewed-by: Prashanth Swaminathan \u003cprashanthsw@google.com\u003e\n"
    },
    {
      "commit": "cf1fd01dd36b06bc06deb42b2189d3db4c28f70e",
      "tree": "b5fbc90f4d708c4e36a346d0ae0dbe500c80fd82",
      "parents": [
        "ed822f85855e9bcf903c696d6abbac03d193c3f4"
      ],
      "author": {
        "name": "Chris Masone",
        "email": "cmasone@google.com",
        "time": "Mon Jun 23 14:57:54 2025 -0700"
      },
      "committer": {
        "name": "Chris Masone",
        "email": "cmasone@google.com",
        "time": "Tue Jun 24 11:19:29 2025 -0700"
      },
      "message": "[mobly] Exit non-zero on signals.TestAbortAll\n\nPer https://github.com/google/mobly/issues/960 Mobly incorrectly exits\neither 0 or 1 when a test raises signals.TestAbortAll -- depending on\nwhether any previous tests have failed or not. Instead of exiting 1 in\nthe case of all tests being aborted, like any other failure, exit with\na special code.\n\nThere aren\u0027t a lot of standard codes in use, but some internal google\ndocs suggest 40 for generic retryable errors. So use that.\n\nBug: b/425675837\n\nChange-Id: I359f68a53eec703c85ea14df2d9508da74387cc8\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1307184\nReviewed-by: Prashanth Swaminathan \u003cprashanthsw@google.com\u003e\n"
    },
    {
      "commit": "ed822f85855e9bcf903c696d6abbac03d193c3f4",
      "tree": "cc7e20bbf2316b6cd3b972de2a150c06f6902da1",
      "parents": [
        "5db27273e01b1e9b08caa46db0c5d648beaeeee6"
      ],
      "author": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Fri Jun 13 10:06:29 2025 -0700"
      },
      "committer": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Fri Jun 13 11:13:37 2025 -0700"
      },
      "message": "[mobly] Limit socket read to under I/O timeout\n\nThe I/O timeout on our bots is generally 6 minutes. Ensure the read\ntimeout is lower than this, to prevent tests from timing out the task.\n\nChange-Id: I96f0ce21c94bb15190bb32595861ee2a6227d33a\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1300570\nReviewed-by: Cole Alban \u003ccolealban@google.com\u003e\n"
    },
    {
      "commit": "5db27273e01b1e9b08caa46db0c5d648beaeeee6",
      "tree": "6800ac8a573146451616509012c237f6d82d671a",
      "parents": [
        "d4f92b612a4a440b2395be71d1b6ca568bf93564"
      ],
      "author": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Mon Jun 09 18:59:52 2025 -0700"
      },
      "committer": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Wed Jun 11 15:57:15 2025 -0700"
      },
      "message": "Allow specifying host and port for adb proxy\n\nThe underlying ADB daemon may be at a particular port on the host. Allow\nsupplying this information to pass through to ADB commands.\n\nChange-Id: I47ac4c6ccc3a0c1869fee116969ae96914ce7070\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1295727\nReviewed-by: Chris Masone \u003ccmasone@google.com\u003e\n"
    },
    {
      "commit": "d4f92b612a4a440b2395be71d1b6ca568bf93564",
      "tree": "b23a21764744ec398a820a6e33bb793196e1611e",
      "parents": [
        "68e8ff7918e86beddf5390ecee4ef33f2c683841"
      ],
      "author": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Fri Jun 06 11:20:34 2025 -0700"
      },
      "committer": {
        "name": "Prashanth Swaminathan",
        "email": "prashanthsw@google.com",
        "time": "Fri Jun 06 12:10:40 2025 -0700"
      },
      "message": "Add selector-based read for protocol with timeout\n\nWhen reading protocol lines, the current logic uses \u0027readline\u0027 and\nblocks indefinitely when the socket does not return. This can hang the\nentire test harness, which is undesirable.\n\nInstead, use selectors to see if data is available within a reasonable\ntimeout and then exit. Callers should capture the error and retry if the\nsystem is temporarily in a bad state.\n\nChange-Id: I5dca73fe7d89f65dfb3155ad492cc203b195b4a1\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1294984\nReviewed-by: Cole Alban \u003ccolealban@google.com\u003e\n"
    },
    {
      "commit": "68e8ff7918e86beddf5390ecee4ef33f2c683841",
      "tree": "026b5cffc8889faa15e90f738aff651a00d8bd3b",
      "parents": [
        "991ecb2d9f7f859f8d86ab771d991473c30f80bc"
      ],
      "author": {
        "name": "Kevin Lindkvist",
        "email": "lindkvist@google.com",
        "time": "Thu Apr 24 23:59:06 2025 +0200"
      },
      "committer": {
        "name": "Kevin Lindkvist",
        "email": "lindkvist@google.com",
        "time": "Fri Apr 25 08:43:07 2025 -0700"
      },
      "message": "Mark all devices as unrootable\n\nThis prevents the framework from rooting the device, which is causing\nproblems in our labs.\n\nChange-Id: I49fab1d7b1da80b1c91c0748509fe627d321662c\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/mobly/+/1260644\nReviewed-by: Vickie Cheng \u003cvickiecheng@google.com\u003e\n"
    },
    {
      "commit": "991ecb2d9f7f859f8d86ab771d991473c30f80bc",
      "tree": "cc34701809805ba2eca652756a959aa695b77014",
      "parents": [
        "93e4847a7bbe95f04156810e956a10a54150f89a"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Mar 21 13:40:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 21 13:40:49 2025 +0800"
      },
      "message": "Check whether adb forwarding takes effect when hit socket connection failure (#957)\n\n"
    },
    {
      "commit": "93e4847a7bbe95f04156810e956a10a54150f89a",
      "tree": "5a6db3b090ad962747b1f2f179f1c457aad6ae1b",
      "parents": [
        "72d5f0f843b58bf4c9251f39ac60b57f9f1f3e6b"
      ],
      "author": {
        "name": "Kolin Lu",
        "email": "kolinlu@google.com",
        "time": "Tue Mar 18 16:37:50 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 16:37:50 2025 -0700"
      },
      "message": "Set default timeout for fastboot command (#959)\n\n* Set default timeout for fastboot command\n\n* Add unittest for not passing timeout arg in fastboot\n\n* Run pyink to auto format Python files\n\n* Remove unitttest for private method"
    },
    {
      "commit": "72d5f0f843b58bf4c9251f39ac60b57f9f1f3e6b",
      "tree": "f24d4d58b79ca99282bf36c2b70aaf8c5548ae1b",
      "parents": [
        "7ba7c7c96dc2b68adc3f825a36ac7d89756fa391"
      ],
      "author": {
        "name": "Kolin Lu",
        "email": "kolinlu@google.com",
        "time": "Tue Mar 18 10:08:09 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 10:08:09 2025 -0700"
      },
      "message": "Update docstring of AndroidDevice controller (#958)\n\n"
    },
    {
      "commit": "7ba7c7c96dc2b68adc3f825a36ac7d89756fa391",
      "tree": "e38a9700af8e549d313d50120bf466d2f04bb3ea",
      "parents": [
        "c98717a8c1cac6b33078c12633488e2217070137"
      ],
      "author": {
        "name": "otakusaikou",
        "email": "otakuzyoutou@gmail.com",
        "time": "Mon Mar 17 02:54:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 16 11:54:37 2025 -0700"
      },
      "message": "Add timeout support for FastbootProxy (#952)\n\nAdd timeout support for `FastbootProxy`, matching that of adb."
    },
    {
      "commit": "c98717a8c1cac6b33078c12633488e2217070137",
      "tree": "fe3325ecdf5022cc89ac7cc3c2246fcb9da74ada",
      "parents": [
        "a489d904870e349ce47cc972d0f20c4723316cce"
      ],
      "author": {
        "name": "Bryan Henry",
        "email": "bryanhenry522@gmail.com",
        "time": "Wed Mar 12 23:55:40 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 13 14:55:40 2025 +0800"
      },
      "message": "Fix suite_runner.run_suite example in docs (#956)\n\n"
    },
    {
      "commit": "a489d904870e349ce47cc972d0f20c4723316cce",
      "tree": "c1403887a537b6e91cff81ba69abaf1e85a472b6",
      "parents": [
        "ac65869d88f94670f1e556c66a6d12eba608c492"
      ],
      "author": {
        "name": "tsunghant",
        "email": "tsunghant@google.com",
        "time": "Thu Feb 20 16:32:47 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 20 00:32:47 2025 -0800"
      },
      "message": "Enable using a custom `fastboot` binary (#954)\n\nEnable specifying a custom `fastboot` binary, similar to the `adb_proxy` module."
    },
    {
      "commit": "ac65869d88f94670f1e556c66a6d12eba608c492",
      "tree": "2c38b66f88572c9a21f38ff6961b85dd43f0a72a",
      "parents": [
        "2ccc96a22e3c7de4d8f84e5e8418076f002d4889"
      ],
      "author": {
        "name": "Jason Stanko",
        "email": "jstanko@google.com",
        "time": "Wed Jan 29 17:18:27 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 29 17:18:27 2025 -0800"
      },
      "message": "Add support for test_suffixes in --tests args (#953)\n\nThis adds support for using test name suffixes when using\r\n`run_suite_class` with the `--tests` arg. It does not change\r\nthe behavior of `run_suite`, however, since that method does\r\nnot support using `name_suffix`."
    },
    {
      "commit": "2ccc96a22e3c7de4d8f84e5e8418076f002d4889",
      "tree": "8761f9f071ddbc8cdf6f97178c43254cc9e20e17",
      "parents": [
        "130f6d97051f6cf69d82644a02ecca34734225aa"
      ],
      "author": {
        "name": "Jason Stanko",
        "email": "jstanko@google.com",
        "time": "Thu Jan 16 23:46:35 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 17 15:46:35 2025 +0800"
      },
      "message": "Implement --list_tests in run_suite_class (#951)\n\n"
    },
    {
      "commit": "130f6d97051f6cf69d82644a02ecca34734225aa",
      "tree": "1a33f278ea575f465f99e741a6ea59f8937e57b7",
      "parents": [
        "19e9df4e5acd4025eacb51841e860588b9e33d62"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Dec 13 10:44:23 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 13 10:44:23 2024 +0800"
      },
      "message": "Support finding suite class that is not defined in the main module. (#948)\n\n"
    },
    {
      "commit": "19e9df4e5acd4025eacb51841e860588b9e33d62",
      "tree": "afbc32d8cc5ae7635fb449d760268fb544d29aab",
      "parents": [
        "d0b760d6cc2bf8c64d1ca0c9638d34e54057c60b"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Dec 12 15:50:19 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 12 15:50:19 2024 +0800"
      },
      "message": "Support test case selection when using suite class. (#947)\n\n"
    },
    {
      "commit": "d0b760d6cc2bf8c64d1ca0c9638d34e54057c60b",
      "tree": "f81e9dc23f6381bec6bde6c0e7dba2065c1045b1",
      "parents": [
        "de93e1e9cb5766d95fa85a9870f16f01c4c38d20"
      ],
      "author": {
        "name": "sztupkay",
        "email": "61594865+sztupkay@users.noreply.github.com",
        "time": "Thu Oct 17 16:43:46 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 17 16:43:46 2024 -0700"
      },
      "message": "Use updated serial when running fastboot command (#945)\n\nMake fastboot follow `AndroidDevice.update_serial`"
    },
    {
      "commit": "de93e1e9cb5766d95fa85a9870f16f01c4c38d20",
      "tree": "e6663ec9785b051dd0c78487e88bdc402b808947",
      "parents": [
        "cf3fbfd758180f40bd442dd70e15aade15a2da0f"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Thu Sep 05 15:14:49 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 05 15:14:49 2024 -0700"
      },
      "message": "Add `get_service_alias_by_class` in Android service manager. (#942)\n\nThis is useful for looking up how many instances of a service has\r\nbeen registered, and find out their aliases.\r\n\r\nUtil functions may depend on services like `uiautomator`. Users tend\r\nto make the mistake of registering the service multiple times even\r\nthe service itself only supports one instance. This can cause implicit\r\nfailures that are difficult to debug.\r\n\r\nThis API can be used to clean things up."
    },
    {
      "commit": "cf3fbfd758180f40bd442dd70e15aade15a2da0f",
      "tree": "65fd9b8c025e584518132bc1945fe6d972cfb8f4",
      "parents": [
        "e4457642d0a3caae35d4c8fa183af670aa8bbdec"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Wed Sep 04 14:17:16 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 04 14:17:16 2024 -0700"
      },
      "message": "Remove `setup_generated_tests`. (#941)\n\n`setup_generated_tests` was deprecated many versions ago."
    },
    {
      "commit": "e4457642d0a3caae35d4c8fa183af670aa8bbdec",
      "tree": "3f1cc62cbbe99e5a2caaab87f7b32dbaed6bbdc7",
      "parents": [
        "4dfbf7ae6530307889f8da237f7f5a775868d56b"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Sep 03 16:58:07 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 03 16:58:07 2024 -0700"
      },
      "message": "Remove all SL4A related code (#939)\n\nSL4A in Mobly has been deprecated for many years. Now it\u0027s time to finally remove all SL4A related code for good."
    },
    {
      "commit": "4dfbf7ae6530307889f8da237f7f5a775868d56b",
      "tree": "47921abe5d2cf1d4accd8e1b98eba19d4a226c43",
      "parents": [
        "a9a149a7dbed911ba06f20a882364d0a4e406ddd"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Fri Aug 30 15:03:27 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 30 15:03:27 2024 -0700"
      },
      "message": "Update jetpack reference to `androidx`. (#940)\n\n"
    },
    {
      "commit": "a9a149a7dbed911ba06f20a882364d0a4e406ddd",
      "tree": "6f4b2af0635b1a66142ea9f3bec82390781bc7d3",
      "parents": [
        "0d634aad9aa85a98103a6cac377f90612eb48446"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Fri Aug 30 14:59:40 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 30 14:59:40 2024 -0700"
      },
      "message": "Support selecting test cases in a class with regex (#938)\n\nUsers can now pass in regex test selector with prefix `re:` in the test case selection arg, for the test class level."
    },
    {
      "commit": "0d634aad9aa85a98103a6cac377f90612eb48446",
      "tree": "78eecafb40394160d78dc04b426d22a1c57c36a3",
      "parents": [
        "3fda40ac54d78bb231cee7c4e2943b588561591a"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Thu Aug 29 16:41:44 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 29 16:41:44 2024 -0700"
      },
      "message": "Mobly Release 1.12.4 (#937)\n\nMobly Release 1.12.4"
    },
    {
      "commit": "3fda40ac54d78bb231cee7c4e2943b588561591a",
      "tree": "6d7c578a535faefbf0d9f051e7d376179461094d",
      "parents": [
        "d32f15bd9f8e9cd9e556284a405370b6fcc10167"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Thu Aug 22 10:30:44 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 22 10:30:44 2024 -0700"
      },
      "message": "Include k-v pairs from device config as `user_added_info` by default. (#935)\n\nSince these k-v pairs are added by users through the device config, by definition these are `user_added_info`. So they should be part of the `user_added_info` field of `device_info`.\r\n\r\nBecause they are user added, we need to guard against arbitrary values that may break yaml reporting downstream."
    },
    {
      "commit": "d32f15bd9f8e9cd9e556284a405370b6fcc10167",
      "tree": "a63ee96c2a7e4d33cee321eaf64032d06dd63270",
      "parents": [
        "306e91ce8f28b3d63645866708b34641897b05e7"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Aug 22 09:15:48 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 22 09:15:48 2024 +0800"
      },
      "message": "Support passing stdout and stderr in start_standing_subprocess (#934)\n\n"
    },
    {
      "commit": "306e91ce8f28b3d63645866708b34641897b05e7",
      "tree": "b7a9fea3e0147d0cb05d56c6a95cebbfdffa6f27",
      "parents": [
        "3eee8c115966a8c15503bf27b8ea0c073bf8c49b"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Aug 13 17:39:16 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 17:39:16 2024 -0700"
      },
      "message": "Apply pyink formatting. (#933)\n\nFormatting changes only"
    },
    {
      "commit": "3eee8c115966a8c15503bf27b8ea0c073bf8c49b",
      "tree": "dc76682e2098cc82ef2e8e45f25ed4dfed8ff589",
      "parents": [
        "0911857b738d26bd4e814eca38a75c65918e780e"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Aug 13 16:52:58 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 16:52:58 2024 -0700"
      },
      "message": "Add utils for installing and uninstalling apks. (#932)\n\n"
    },
    {
      "commit": "0911857b738d26bd4e814eca38a75c65918e780e",
      "tree": "52f37a288d7134dba26af9a8ac70ef652486ac05",
      "parents": [
        "70f5c0582f37e4cdb0fb758347c3e58503925600"
      ],
      "author": {
        "name": "minghsikang",
        "email": "minghsi@google.com",
        "time": "Tue Jun 04 16:47:23 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 04 16:47:23 2024 +0800"
      },
      "message": "Use self.is_adb_detectable() to prevent build_info from None even it is not in bootloader. (#923)\n\n"
    },
    {
      "commit": "70f5c0582f37e4cdb0fb758347c3e58503925600",
      "tree": "6b9bb792f1eb071d2fd3812d52498658e64c9e49",
      "parents": [
        "dd2ce76fc668fa29e94311947ca96f69aaeb5af0"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Tue Jun 04 01:55:23 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 03 10:55:23 2024 -0700"
      },
      "message": "Add snippet client stop timeout (#922)\n\n* Add a timeout for Android snippet client\u0027s `stop`."
    },
    {
      "commit": "dd2ce76fc668fa29e94311947ca96f69aaeb5af0",
      "tree": "ce6d37260810b0960cc82ca161e342751793de2d",
      "parents": [
        "bb5e4444a649853b8c7fd390e6ca9be41be0d1bd"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Mon May 20 11:33:45 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 20 11:33:45 2024 +0800"
      },
      "message": "Fix the error that not all Linux hosts have pgrep installed (#921)\n\n"
    },
    {
      "commit": "bb5e4444a649853b8c7fd390e6ca9be41be0d1bd",
      "tree": "03800d815b64da5867325ce7c1f915c99b2043d7",
      "parents": [
        "07f0a24e8d1b6d568d8e7d26eea28f0608c49322"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Sun May 12 23:31:04 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 12 23:31:04 2024 -0700"
      },
      "message": "Fix utils.stop_standing_subprocess error on Mac OS (#920)\n\n"
    },
    {
      "commit": "07f0a24e8d1b6d568d8e7d26eea28f0608c49322",
      "tree": "7868d71649705c928154e0bc47258ca0acf4cf7d",
      "parents": [
        "c2810ee01db3ce5a44a1e89ce7faadb733f22e82"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Apr 11 22:50:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 11 22:50:59 2024 +0800"
      },
      "message": "Log each command execution result in utils.run_command (#917)\n\n"
    },
    {
      "commit": "c2810ee01db3ce5a44a1e89ce7faadb733f22e82",
      "tree": "79c75aff07e1f4d08f707664f1ab6683d90d8bba",
      "parents": [
        "161ff47b51c5fa836bf7a14fbdc69587682018b3"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Apr 11 22:45:14 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 11 07:45:14 2024 -0700"
      },
      "message": "Set pyink to a fixed version and fix format (#918)\n\n"
    },
    {
      "commit": "161ff47b51c5fa836bf7a14fbdc69587682018b3",
      "tree": "a8f3b8f68306298705549cd13a11b66d1fae2022",
      "parents": [
        "2e64eff9d10bd449894131f464c599a0c83d3dcd"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Thu Mar 07 13:38:49 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 07 13:38:49 2024 -0800"
      },
      "message": "Fix typos in release notes. (#914)\n\n"
    },
    {
      "commit": "2e64eff9d10bd449894131f464c599a0c83d3dcd",
      "tree": "a2989d7125e3860e837a1d4b183ac48bab43e3f2",
      "parents": [
        "f7eb2a0a5410fa7014f51b439fe72b1d4c1433cd"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Wed Mar 06 13:57:42 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 06 13:57:42 2024 -0800"
      },
      "message": "Mobly Release 1.12.3. (#913)\n\n* Mobly Release 1.12.3."
    },
    {
      "commit": "f7eb2a0a5410fa7014f51b439fe72b1d4c1433cd",
      "tree": "17c151cf8b39e77fa01e100d83f28d4410e5409c",
      "parents": [
        "28be0fdba146f2a180e567126749b34bde9ff8cf"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Wed Feb 07 10:39:46 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 18:39:46 2024 -0800"
      },
      "message": "Mark `utils.get_available_host_port` deprecated (#907)\n\nGetting host port then applying it is inherently unreliable.\r\nLetting the OS handle it is better."
    },
    {
      "commit": "28be0fdba146f2a180e567126749b34bde9ff8cf",
      "tree": "eabb7830df24fb8e9bfe046953465fc7703b64e8",
      "parents": [
        "13537bce9b146e3c44fc8117f5cf23a106bfdd4b"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Feb 06 03:44:22 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 03:44:22 2024 -0800"
      },
      "message": "Update `README` after build toolchain changes. (#912)\n\n"
    },
    {
      "commit": "13537bce9b146e3c44fc8117f5cf23a106bfdd4b",
      "tree": "5bdd53115a8e1f03b4742e5f26d8165903f9fce0",
      "parents": [
        "7b938e0579ce4bf5f183b19bab8d7273674752b5"
      ],
      "author": {
        "name": "Sam Balana",
        "email": "sbalana@google.com",
        "time": "Wed Jan 31 15:26:48 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 31 15:26:48 2024 -0800"
      },
      "message": "Fix whitespace stripping in _collect_process_tree (#891)\n\nFix UtilsTest.test_stop_standing_subproc_and_descendants failure for\r\nversions of ps that do not include a space after each newline.\r\n\r\nCo-authored-by: Ang Li \u003cangli@google.com\u003e"
    },
    {
      "commit": "7b938e0579ce4bf5f183b19bab8d7273674752b5",
      "tree": "cf74cb1a943c4b229985cbd26c914e25e485e213",
      "parents": [
        "68724d8fa39e779c7d6f960a7f4d4822ae26903c"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Jan 30 22:47:58 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 30 22:47:58 2024 -0800"
      },
      "message": "Switch to pyproject.toml completely (#911)\n\n* Remove `setup.py` and `setup.cfg`\r\n* Remove `typing_extensions` as we now require Python 3.11+."
    },
    {
      "commit": "68724d8fa39e779c7d6f960a7f4d4822ae26903c",
      "tree": "c09659d8e1a0828fb0567eaaf5f1753ef6694b01",
      "parents": [
        "3da49fa2dd58da889ac9673ef055d74ea2497dd7"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Mon Jan 22 17:32:57 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 22 17:32:57 2024 -0800"
      },
      "message": "Cache `AndroidDevice#model` to reduce fastboot calls (#910)\n\nfastboot calls are expensive and can increase USB flakiness when issued in large amount.\r\nSo we should reduce fastboot calls whenever possible"
    },
    {
      "commit": "3da49fa2dd58da889ac9673ef055d74ea2497dd7",
      "tree": "123e0c55200bf6e6da1a2bef3b69a1dea68da736",
      "parents": [
        "707eff2238c2f475bb1ac161f861065a1fc2a360"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Mon Jan 22 13:54:49 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 22 13:54:49 2024 -0800"
      },
      "message": "Bump min Python ver to 3.11. (#909)\n\nNow that Python3 releases regularly, we will start bumping Mobly\u0027s\r\nrequired min Python version more frequently.\r\n\r\nCurrently 3.11 is the oldest `bugfix` support level ver. So we are\r\nbumping to 3.11.\r\n\r\nAlso remove usage of the deprecated `pipes`, and applied formatter"
    },
    {
      "commit": "707eff2238c2f475bb1ac161f861065a1fc2a360",
      "tree": "442a0dc32fbbfccb5f6e4176240ced16b24340e6",
      "parents": [
        "46ff13e8bfaac24b6ba3ea43b2da9b5a1b0dec68"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Sun Jan 07 20:25:14 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 07 04:25:14 2024 -0800"
      },
      "message": "Count should only count retries and not repeats. (#906)\n\n"
    },
    {
      "commit": "46ff13e8bfaac24b6ba3ea43b2da9b5a1b0dec68",
      "tree": "af8400a5c85037110faa2899aeec09fb3e0dae08",
      "parents": [
        "6c5d666c44d350a2f906351c645d4f8313463a43"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Fri Dec 29 09:15:34 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 28 17:15:34 2023 -0800"
      },
      "message": "Add parent field to records to represent repeat and retry information. (#905)\n\nThis provides a generic way to mark the sequential relationship of test result records.\r\nThe intention is to make it easier for downstream parsers to process test result records for repeat and retry cases.\r\n\r\nThe `retry_parent` field is now deprecated in test result record."
    },
    {
      "commit": "6c5d666c44d350a2f906351c645d4f8313463a43",
      "tree": "1927cfee064f6a77e92c3b213e807ae00f0bca15",
      "parents": [
        "8ad26db66f37450a9abe87f8cf47b2b241c3a1f5"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Dec 15 15:11:31 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 14 23:11:31 2023 -0800"
      },
      "message": "Using tcp:0 in adb forward to pick available host port in snippet client (#904)\n\nThis avoids a race condition where the port picked by `portpicker` becomes occupied before adb can forward it."
    },
    {
      "commit": "8ad26db66f37450a9abe87f8cf47b2b241c3a1f5",
      "tree": "026d00332c2f2d270d8bc2eeb86e07ec4a09455e",
      "parents": [
        "ebdec3a739616cf48b6d60624b68801d0bbf4718"
      ],
      "author": {
        "name": "Sachin Sagadevan",
        "email": "148814276+ssachinsunder@users.noreply.github.com",
        "time": "Tue Oct 31 00:10:18 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 30 22:10:18 2023 -0700"
      },
      "message": "Adding ability to run adb reverse via mobly AdbProxy, fixes #900 (#903)\n\n"
    },
    {
      "commit": "ebdec3a739616cf48b6d60624b68801d0bbf4718",
      "tree": "ed5c274cdabf50782dd8c998c7d1f82a67b04eec",
      "parents": [
        "45baf1ed4a2a754936d3b9434c065c334aaeae4b"
      ],
      "author": {
        "name": "nkprasad12",
        "email": "31296089+nkprasad12@users.noreply.github.com",
        "time": "Thu Oct 26 17:29:55 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 26 17:29:55 2023 -0700"
      },
      "message": "Fix current formatting issues and add formatting check to CI workflow (#902)\n\n* Switch to Pyink for formatting\r\n\r\n---------\r\n\r\nCo-authored-by: Nitin Prasad \u003cnkprasad@google.com\u003e"
    },
    {
      "commit": "45baf1ed4a2a754936d3b9434c065c334aaeae4b",
      "tree": "b44914e52eaccb27b17a55487ec608481a996d2b",
      "parents": [
        "207d7933992733b172ccb5e6543078f747063bd3"
      ],
      "author": {
        "name": "nkprasad12",
        "email": "31296089+nkprasad12@users.noreply.github.com",
        "time": "Mon Oct 23 22:37:00 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 23 22:37:00 2023 -0700"
      },
      "message": "Allow configuring snippet user. (#899)\n\nCo-authored-by: Nitin Prasad \u003cnkprasad@google.com\u003e"
    },
    {
      "commit": "207d7933992733b172ccb5e6543078f747063bd3",
      "tree": "cc0162dafa64f8cfaa1af200c4dfdd66af8868be",
      "parents": [
        "539a442ed0a396ceec1dfd692f452ddf1380a872"
      ],
      "author": {
        "name": "Kolin Lu",
        "email": "kolinlu@google.com",
        "time": "Thu Sep 21 08:46:37 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 20 17:46:37 2023 -0700"
      },
      "message": "Add the latest release version and CI build status (#895)\n\n* Also start running tests on Python 3.9, 3.10, and 3.11"
    },
    {
      "commit": "539a442ed0a396ceec1dfd692f452ddf1380a872",
      "tree": "a6a571cfa76eddb4990e6c61c19f116062e7d337",
      "parents": [
        "6392f83acf512fb9e3a9229858bf9fd26e9d7278"
      ],
      "author": {
        "name": "Sam Balana",
        "email": "sbalana@google.com",
        "time": "Sat Sep 02 15:10:46 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 02 15:10:46 2023 -0700"
      },
      "message": "Remove unused imports (#892)\n\n"
    },
    {
      "commit": "6392f83acf512fb9e3a9229858bf9fd26e9d7278",
      "tree": "a17cee3eaf4e3d329a7fc024592a7bc44f4e6c8f",
      "parents": [
        "da3c204be7ceb8d027a6e83456997804f57f5fd0"
      ],
      "author": {
        "name": "Tennessee Carmel-Veilleux",
        "email": "tennessee.carmelveilleux@gmail.com",
        "time": "Mon Jun 05 23:06:26 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 05 20:06:26 2023 -0700"
      },
      "message": "Fix a doc typo in records.py (#889)\n\n"
    },
    {
      "commit": "da3c204be7ceb8d027a6e83456997804f57f5fd0",
      "tree": "94488d3e32d370e4a381c326dc5fd2783e671129",
      "parents": [
        "b443e440c112ebc5d47629b7dd905cc4ef3e9977"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Mon May 22 10:35:29 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 22 10:35:29 2023 +0800"
      },
      "message": "Support am instrument options by adding a snippet config class (#886)\n\n"
    },
    {
      "commit": "b443e440c112ebc5d47629b7dd905cc4ef3e9977",
      "tree": "6abf98c3eefedfda30ff3cec9888c4cf84e0b57e",
      "parents": [
        "031aa94cff5e7b5392b52d65f9f4ca9ca63144c8"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Wed May 03 22:46:54 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 22:46:54 2023 -0700"
      },
      "message": "Mobly Release 1.12.2. (#884)\n\n"
    },
    {
      "commit": "031aa94cff5e7b5392b52d65f9f4ca9ca63144c8",
      "tree": "11ba1d2d9602e503a875dd1e751457aa9113d9d9",
      "parents": [
        "791b49cbe68057c9d397430a6d76f8f4fc21465e"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Apr 25 15:36:42 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 25 15:36:42 2023 -0700"
      },
      "message": "Do not start logcat service when the Andriod device is in fastboot mode. (#881)\n\n"
    },
    {
      "commit": "791b49cbe68057c9d397430a6d76f8f4fc21465e",
      "tree": "ec830e7bc342701464ae9b7d709a8dd88fa08496",
      "parents": [
        "8693d1812c7cb3b3c19933970a55c1babb1bf78a"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Wed Apr 26 02:10:03 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 25 11:10:03 2023 -0700"
      },
      "message": "Properly end the test when expects has an error within teardown test. (#882)\n\n"
    },
    {
      "commit": "8693d1812c7cb3b3c19933970a55c1babb1bf78a",
      "tree": "71eb749c950c10cc648a0a84685e913a754f83cb",
      "parents": [
        "8bec7e3f63a5b9c2ca1afc51b6460517445f5c1e"
      ],
      "author": {
        "name": "Lucas Abel",
        "email": "22837557+uael@users.noreply.github.com",
        "time": "Tue Apr 18 22:09:50 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 18 22:09:50 2023 -0700"
      },
      "message": "Fix the print test list logic in `test_runner` (#878)\n\n"
    },
    {
      "commit": "8bec7e3f63a5b9c2ca1afc51b6460517445f5c1e",
      "tree": "bb0952b2a3a3d6cda8fa7ab6dd943537428908fe",
      "parents": [
        "33cc76f339c04bc3f970c8c2c434c911bd45da92"
      ],
      "author": {
        "name": "antofara",
        "email": "48907599+antofara@users.noreply.github.com",
        "time": "Wed Apr 19 06:34:27 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 18 21:34:27 2023 -0700"
      },
      "message": "Fix unused \u0027name\u0027 argument in AttenuatorPath constructor (#877)\n\nstore the path name for future usage"
    },
    {
      "commit": "33cc76f339c04bc3f970c8c2c434c911bd45da92",
      "tree": "2df4282962a1abadd104cfc7e726828edf6d6641",
      "parents": [
        "384ebbe47fbc48af60d73b1bede1f78976612fc4"
      ],
      "author": {
        "name": "nkprasad12",
        "email": "31296089+nkprasad12@users.noreply.github.com",
        "time": "Mon Apr 17 19:06:19 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 17 17:06:19 2023 -0700"
      },
      "message": "Add type hint for `current_test_info` (#879)\n\n* Avoid setting `current_test_info` to `None`\r\n\r\n* Set signature of placeholder record.\r\n\r\n* Set a type hint for current_test_info without placeholder.\r\n\r\n* Restore setting cti to none"
    },
    {
      "commit": "384ebbe47fbc48af60d73b1bede1f78976612fc4",
      "tree": "2341cedff3dd8f8e1dd6be1834f5a149c05da2bb",
      "parents": [
        "61706b7bfb759269cebcc44d4888b6016782d34b"
      ],
      "author": {
        "name": "Lucas Abel",
        "email": "22837557+uael@users.noreply.github.com",
        "time": "Thu Mar 23 11:17:25 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 23 11:17:25 2023 -0700"
      },
      "message": "Default `TestRunConfig.log_path` to `_DEFAULT_LOG_PATH` (#876)\n\n"
    },
    {
      "commit": "61706b7bfb759269cebcc44d4888b6016782d34b",
      "tree": "be98e9e74eb0a646fcc03229b458318d7c4610fd",
      "parents": [
        "63699380829c94f636e2bd27680e761a37768628"
      ],
      "author": {
        "name": "Lucas Abel",
        "email": "22837557+uael@users.noreply.github.com",
        "time": "Tue Mar 21 10:37:39 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 21 10:37:39 2023 -0700"
      },
      "message": "suite_runner improvements (#875)\n\nAs of the test runner:\r\n* Parse only known arguments.\r\n* Handle -l, --list_tests option.\r\n* Handle -tb, --test_bed option.\r\n* Handle -v, --verbose option.\r\n\r\nAlso, do not force test name to only contains one dot `.` by passing\r\n`maxsplit\u003d1` to `test_name.split`. This allow for more complex generated\r\ntest names."
    },
    {
      "commit": "63699380829c94f636e2bd27680e761a37768628",
      "tree": "4577681d587655b6ed3efca425ec86979401b87d",
      "parents": [
        "caf37d004aea640011dc641857e52423b6c8442a"
      ],
      "author": {
        "name": "Lucas Abel",
        "email": "22837557+uael@users.noreply.github.com",
        "time": "Thu Mar 02 09:07:39 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 02 09:07:39 2023 -0800"
      },
      "message": "record: emit explicit end when appending to summary (#872)\n\nSince the `yaml` summary file is appended during the process, a reader\r\nis able to handle any new record as soon as they have been written. But\r\nit may read incomplete `yaml` data, for example on Linux there is no\r\nguaranty that a single write to file will be available as one read.\r\n\r\nBy explicitly emitting the end marker to the record, the reader may now\r\nbe able to read the complete `yaml` data before processing it."
    },
    {
      "commit": "caf37d004aea640011dc641857e52423b6c8442a",
      "tree": "bae15f28535eea3aa42f72bab920d63f26c7cf50",
      "parents": [
        "a8dc1c739d91adf93a83f4e4d4bb27168807df34"
      ],
      "author": {
        "name": "Lucas Abel",
        "email": "22837557+uael@users.noreply.github.com",
        "time": "Tue Feb 14 17:56:20 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 14 17:56:20 2023 -0800"
      },
      "message": "Fix unhandling of possible recursion error on `ExceptionRecord.__deepcopy__` (#870)\n\n"
    },
    {
      "commit": "a8dc1c739d91adf93a83f4e4d4bb27168807df34",
      "tree": "96fb2b6604d85e4159fcd9769a00fa55708bae0c",
      "parents": [
        "927dd31baf4f778b4bdbfa38f1d88e2abcba76b4"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Tue Feb 07 02:22:32 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 06 10:22:32 2023 -0800"
      },
      "message": "Fix unit test failures on Python 3.11 (#869)\n\n"
    },
    {
      "commit": "927dd31baf4f778b4bdbfa38f1d88e2abcba76b4",
      "tree": "753e6ac42a03eb0d46a0a75e9bf118488fb4ca41",
      "parents": [
        "2fd507d8df3a8ab379689cdda04f854366839838"
      ],
      "author": {
        "name": "antofara",
        "email": "48907599+antofara@users.noreply.github.com",
        "time": "Thu Feb 02 21:03:12 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 02 12:03:12 2023 -0800"
      },
      "message": "Progressively increase intervals between adb root attempts (#867)\n\n* Extend the longest possible wait for `adb root` because the low end devices require more time to reconnect after `adb root`. \r\n* Fix a typo"
    },
    {
      "commit": "2fd507d8df3a8ab379689cdda04f854366839838",
      "tree": "4ad51b76a24ea9a043bd151013c6ce040781d45b",
      "parents": [
        "86688d320670f924e709340c0d84b306fbbf2a17"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Wed Jan 18 00:23:10 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 18 00:23:10 2023 -0800"
      },
      "message": "Mobly Release 1.12.1. (#866)\n\n"
    },
    {
      "commit": "86688d320670f924e709340c0d84b306fbbf2a17",
      "tree": "30dbed2bbc49ed749ef30053ad46926ea79135c6",
      "parents": [
        "1c44fd97c968c5d1eba4ee6a1ef988b814a150d9"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Sun Jan 15 18:14:26 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 16 10:14:26 2023 +0800"
      },
      "message": "Make the summary file path more accessible. (#865)\n\nThis file is the entry point of all result parsing. We make this path\r\nclear so the upper layer systems don\u0027t have to calculate it with\r\nassumptions that may change implicitly."
    },
    {
      "commit": "1c44fd97c968c5d1eba4ee6a1ef988b814a150d9",
      "tree": "d36b051eb65c90d38e605a1d929d25ae9441eadf",
      "parents": [
        "f7f323e319d8ef66eb7ddf8ee7f5cb17d395b481"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Fri Jan 13 15:20:37 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 13 15:20:37 2023 -0800"
      },
      "message": " Ensure the termination of the `teardown_class` record. (#864)\n\n"
    },
    {
      "commit": "f7f323e319d8ef66eb7ddf8ee7f5cb17d395b481",
      "tree": "d5d66b9928ed509e47d50a105862fb95166711a7",
      "parents": [
        "23715574c78dd89ae587942b87b401fe18113a5c"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Fri Jan 13 14:54:08 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 13 14:54:08 2023 -0800"
      },
      "message": "Adjust timeout strategy for `AdbProxy#getprop` (#863)\n\nBecause this command can take surprisingly long, like when the\r\ndevice used is a virtual device over network.\r\n\r\n* Extend the default timeout.\r\n* Allow custom timeout value."
    },
    {
      "commit": "23715574c78dd89ae587942b87b401fe18113a5c",
      "tree": "1d8a08058fb5df727d6758aa4652f8ee18bca026",
      "parents": [
        "8d044d22674bff6b2fd748d5d95c0e4329721d96"
      ],
      "author": {
        "name": "Tatsujin Chin",
        "email": "c910335@gmail.com",
        "time": "Fri Jan 06 17:56:29 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 06 01:56:29 2023 -0800"
      },
      "message": "Fix list_fastboot_devices for other usb interfaces (#859)\n\n"
    },
    {
      "commit": "8d044d22674bff6b2fd748d5d95c0e4329721d96",
      "tree": "76cd10edc40b700bcd5cb7c53b0262a20e458456",
      "parents": [
        "7892f34ba6a64e348edb2533e0be3bf6fab50570"
      ],
      "author": {
        "name": "xianyuanjia",
        "email": "56282287+xianyuanjia@users.noreply.github.com",
        "time": "Wed Jan 04 10:22:04 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 04 10:22:04 2023 -0800"
      },
      "message": "Add check for Cuttlefish devices in `is_emulator` (#860)\n\nCo-Authored-By: Ang Li \u003cangli@google.com\u003e"
    },
    {
      "commit": "7892f34ba6a64e348edb2533e0be3bf6fab50570",
      "tree": "4228471a19685c3536620c860d4be8f066ebc140",
      "parents": [
        "825487148ac3a83e2026cd1628795b8ac5b94d9a"
      ],
      "author": {
        "name": "Taylor Cramer",
        "email": "cramertaylorj@gmail.com",
        "time": "Wed Jan 04 10:12:25 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 04 10:12:25 2023 -0800"
      },
      "message": "Omit traceback logging for test skip exceptions (#862)\n\n"
    },
    {
      "commit": "825487148ac3a83e2026cd1628795b8ac5b94d9a",
      "tree": "b079d6691c974639bbb75a7283eaea6bc4373b78",
      "parents": [
        "9238569ac251d3574c98ff751c523073f0d5e50d"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Tue Dec 13 08:36:22 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 12 16:36:22 2022 -0800"
      },
      "message": "Handle SIGTERM in Mobly. (#858)\n\n"
    },
    {
      "commit": "9238569ac251d3574c98ff751c523073f0d5e50d",
      "tree": "c2efa3c6aab44895274067e5bf4ddbae7ef548d7",
      "parents": [
        "f788d4181d6ec10f2a881ca56ef9b7a3b09ae0ee"
      ],
      "author": {
        "name": "Jon Wolverton",
        "email": "wolverdude@users.noreply.github.com",
        "time": "Tue Dec 06 22:25:16 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 06 22:25:16 2022 -0800"
      },
      "message": "Don\u0027t mutate BaseTestClass.record_data() argument. (#856)\n\n"
    },
    {
      "commit": "f788d4181d6ec10f2a881ca56ef9b7a3b09ae0ee",
      "tree": "cbd371fa0ee0d7857b29cff32ce130d4a9b4956e",
      "parents": [
        "1b6e611e937bf4b59ffa5b8fe8056d0b7ed205b6"
      ],
      "author": {
        "name": "Art Orlov",
        "email": "74026764+artorl@users.noreply.github.com",
        "time": "Wed Nov 30 13:03:20 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 30 13:03:20 2022 -0800"
      },
      "message": "Fix erroneous asserts.assert_count_equal docstring summary (#855)\n\nCo-authored-by: Ang Li \u003cangli@google.com\u003e"
    },
    {
      "commit": "1b6e611e937bf4b59ffa5b8fe8056d0b7ed205b6",
      "tree": "a2639b00c6d2dab79a0e97a9d769e2422d9bc9c9",
      "parents": [
        "a6e5ad247480adb4491560423e90259d697f75b0"
      ],
      "author": {
        "name": "Aidan Holm",
        "email": "aidanholm+github@gmail.com",
        "time": "Thu Dec 01 04:58:44 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 30 12:58:44 2022 -0800"
      },
      "message": "Add debug logging for fastboot commands. (#854)\n\nThis is equivalent in functionality to the existing logging for ADB commands.\r\n\r\nCo-authored-by: Aidan Holm \u003calfh@google.com\u003e"
    },
    {
      "commit": "a6e5ad247480adb4491560423e90259d697f75b0",
      "tree": "0623f60da0e165352cf94e42cfb7307a2f6fb844",
      "parents": [
        "3f8bec9ac2a144cdb1c9c28801eb9f99ba046a90"
      ],
      "author": {
        "name": "Sebastian",
        "email": "sebastian@topobyte.de",
        "time": "Thu Nov 10 18:43:47 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 10 09:43:47 2022 -0800"
      },
      "message": "Update instrumentation_tutorial.md (#853)\n\nFix typo \"quailied\""
    },
    {
      "commit": "3f8bec9ac2a144cdb1c9c28801eb9f99ba046a90",
      "tree": "77f9755d5e7833f5ac0bc8c0520d154fc2c6d248",
      "parents": [
        "c4261efa56b0077136a2e5531ff4e0139c9a6b30"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Nov 03 16:44:24 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 03 16:44:24 2022 +0800"
      },
      "message": "Expose the method to set new log prefix in PrefixLoggerAdapter (#852)\n\n"
    },
    {
      "commit": "c4261efa56b0077136a2e5531ff4e0139c9a6b30",
      "tree": "d752fb6c6125ef16dfc1987cc315f283e38afd80",
      "parents": [
        "7fb50849dd782e40e0eee1592bfe4837543a7d1d"
      ],
      "author": {
        "name": "Sam Balana",
        "email": "sambalana247@gmail.com",
        "time": "Thu Oct 13 19:52:01 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 13 19:52:01 2022 -0700"
      },
      "message": "Remove unused dependencies (#850)\n\nRemove `pyserial` and `timeout_decorator` from deps as they are no longer used. Also mark typing_extensions as only necessary for Python versions below 3.8."
    },
    {
      "commit": "7fb50849dd782e40e0eee1592bfe4837543a7d1d",
      "tree": "fb4da3c334d5fde6ca0cb206214576e6bc9ec3a2",
      "parents": [
        "516b715f07ff4bc6f79513243d2e6c8546e4c907"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Aug 26 09:30:45 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 26 09:30:45 2022 +0800"
      },
      "message": "Create a prefix logger adapter class to add prefix to logs (#849)\n\n"
    },
    {
      "commit": "516b715f07ff4bc6f79513243d2e6c8546e4c907",
      "tree": "ecf2c280c4b3f4a8654eb0f22858b9402d02fd9a",
      "parents": [
        "2da2ec36501a6e510d1b092d22fa03a71c40821f"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Mon Aug 15 22:54:12 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 15 22:54:12 2022 -0700"
      },
      "message": "Always create the `AndroidDevice` object specific log directory. (#848)\n\nCreate upon access if `log_path` doesn\u0027t exist"
    },
    {
      "commit": "2da2ec36501a6e510d1b092d22fa03a71c40821f",
      "tree": "81cf52e1e969fcc4ce99496bf49c5a3477459111",
      "parents": [
        "792df04ea317ca3ab0bdab3e0b73ee6c900eb7c1"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Fri Aug 05 10:34:30 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 05 10:34:30 2022 -0700"
      },
      "message": "Mobly Release 1.12. (#846)\n\n"
    },
    {
      "commit": "792df04ea317ca3ab0bdab3e0b73ee6c900eb7c1",
      "tree": "028b8836e16f187ecac65074557b4c2d150d6dea",
      "parents": [
        "84a80b3e50cc752e61a196ae4b6eb740d2840d4b"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Aug 02 18:32:08 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 02 18:32:08 2022 -0700"
      },
      "message": "Fix calling `generate_tests` in the `setup_genearted_tests` stage. (#847)\n\nAlthough it is deprecated, we need to keep it working until the complete removal."
    },
    {
      "commit": "84a80b3e50cc752e61a196ae4b6eb740d2840d4b",
      "tree": "f3eb717b2773801ab4e058e833e628d0399e6198",
      "parents": [
        "f2a80cad913d03695db491e12772f6b124e7f882"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Mon Aug 01 13:02:21 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 01 13:02:21 2022 -0700"
      },
      "message": "Rename the `setup_generated_tests` stage to `pre_run`. (#844)\n\nUsers have identified more legit use cases where operations before `setup_class` are needed. The `setup_generated_tests` stage is essentially the stage before `setup_class`. Hence we are renaming it more properly."
    },
    {
      "commit": "f2a80cad913d03695db491e12772f6b124e7f882",
      "tree": "788b11cf52dae197683bdae96ed91882fe0cbb88",
      "parents": [
        "04bef05b571e6dc8679b5beddb383038883f80b2"
      ],
      "author": {
        "name": "David Duarte",
        "email": "git@delta.sh",
        "time": "Mon Aug 01 21:51:19 2022 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 01 12:51:19 2022 -0700"
      },
      "message": "Add a --verbose argument to the test_runner to set DEBUG logging level (#840)\n\nCo-authored-by: Ang Li \u003cangli@google.com\u003e"
    },
    {
      "commit": "04bef05b571e6dc8679b5beddb383038883f80b2",
      "tree": "57bac2e7802c97dd53e34b0218b2900ebf304ab8",
      "parents": [
        "172d0cb9d18712b0411f1d94edec952b6a77f725"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Jul 22 13:27:06 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 22 13:27:06 2022 +0800"
      },
      "message": "Clean up legacy code (#842)\n\n"
    },
    {
      "commit": "172d0cb9d18712b0411f1d94edec952b6a77f725",
      "tree": "fdf01fd275d4a32e1dc5d29621fcc1d8d0f90541",
      "parents": [
        "98273a255ed885f23d4396c6ad125a758f2683a9"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Wed Jul 20 12:34:44 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 20 12:34:44 2022 +0800"
      },
      "message": "Deprecate legacy snippet modules after snippet client v2 migration (#841)\n\n"
    },
    {
      "commit": "98273a255ed885f23d4396c6ad125a758f2683a9",
      "tree": "42feac63486cec4c8b70895dbdc15c3a339bcd35",
      "parents": [
        "9778e55a611aa12f3c96db036f8c888c91631718"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Jun 30 11:30:14 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 30 11:30:14 2022 +0800"
      },
      "message": "Flip the default Android snippet client version to V2 (#839)\n\n"
    },
    {
      "commit": "9778e55a611aa12f3c96db036f8c888c91631718",
      "tree": "cec1cdf945d1cd596a9748dcc715772b13669e61",
      "parents": [
        "7948eaf5dbbab2c80ea907e0a64e74c53f987707"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Fri Jun 24 11:03:02 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 24 11:03:02 2022 +0800"
      },
      "message": "Remove argv check. Check is already done in parse_cli_args and should be sys.argv[1:]. (#838)\n\n"
    },
    {
      "commit": "7948eaf5dbbab2c80ea907e0a64e74c53f987707",
      "tree": "ca78a408bb5de0f0a34d45303c6cb518b728c64b",
      "parents": [
        "6ea354d419fd11c39b1c655a59c6c304ff95d67c"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Tue Jun 21 00:51:20 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 21 00:51:20 2022 -0700"
      },
      "message": "Add termination signal type to record. (#837)\n\nSo this information can be parsed more easily.\r\nWithout this field, the parsers would need to use regex magic or\r\nmake assumptions of the trace\u0027s format to get this info."
    },
    {
      "commit": "6ea354d419fd11c39b1c655a59c6c304ff95d67c",
      "tree": "c3388b1b875e77fa59962c0966376c96fcee7531",
      "parents": [
        "aad7f30c9d959ad1dff8a54fdfce2719414431db"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Jun 17 23:18:50 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 17 23:18:50 2022 +0800"
      },
      "message": "Support switching to client V2 via Android Device property setting (#835)\n\n"
    },
    {
      "commit": "aad7f30c9d959ad1dff8a54fdfce2719414431db",
      "tree": "65dd1ffce111a7a6cb639c586855ce6f0c6719ec",
      "parents": [
        "0b8fabd95c9d6643eca2a7c509c6c2fd98c88496"
      ],
      "author": {
        "name": "Ang Li",
        "email": "angli@google.com",
        "time": "Thu Jun 16 21:13:04 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 16 21:13:04 2022 -0700"
      },
      "message": "Add error type to `ExceptionRecord`. (#836)\n\nSo it\u0027s easier for parsers to get this info."
    },
    {
      "commit": "0b8fabd95c9d6643eca2a7c509c6c2fd98c88496",
      "tree": "ec6f2db0dd76d84fbbc543c4e8f47e2b97c943de",
      "parents": [
        "a0948ae35bfec5d33819f824f5d59692e9f78fe5"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Thu Jun 09 13:36:49 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 09 13:36:49 2022 +0800"
      },
      "message": "ClientBase shouldn\u0027t call \"stop\" if \"before_starting_server\" failed (#834)\n\n"
    },
    {
      "commit": "a0948ae35bfec5d33819f824f5d59692e9f78fe5",
      "tree": "13520a15ea9afa4fb3b3fcd0b8be0d565062009e",
      "parents": [
        "a7ed61e2c10617c57cc42121898bba7f066eb53f"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Tue Jun 07 05:07:02 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 06 14:07:02 2022 -0700"
      },
      "message": "Alias error classes of callback handler v1 to the new ones (#832)\n\n"
    },
    {
      "commit": "a7ed61e2c10617c57cc42121898bba7f066eb53f",
      "tree": "67e7eb4887a1e13c8dd6cb8943741bc4ec07dbaa",
      "parents": [
        "bafbbcfcf0d5b7f330375e9965f1ff4ff5795401"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri Jun 03 10:43:09 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 03 10:43:09 2022 +0800"
      },
      "message": "Standardize Async RPC for snippet client v2 (#826)\n\n* Provide a simple abstract base class for callback handlers of all platforms.\r\n* Implement the callback handler v2 for Android. "
    },
    {
      "commit": "bafbbcfcf0d5b7f330375e9965f1ff4ff5795401",
      "tree": "9b717ad7a558bfcf7d8ab7f5b95d227ad3be2df7",
      "parents": [
        "22a88e03d615fabfe204ec058aa03f552a227f26"
      ],
      "author": {
        "name": "Ted Pudlik",
        "email": "tpudlik@gmail.com",
        "time": "Wed Jun 01 10:59:51 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 01 10:59:51 2022 -0700"
      },
      "message": "Fix typos in tutorial.md (#830)\n\nRemove extra linebreak between the [] and () to fix linking"
    },
    {
      "commit": "22a88e03d615fabfe204ec058aa03f552a227f26",
      "tree": "4da8007c03af04ade0b5fd93140d3281840bb064",
      "parents": [
        "5a313a3b4e716f073f55e79363e439623c0fb7ff"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Tue May 24 12:00:22 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 23 21:00:22 2022 -0700"
      },
      "message": "Client V2 cleans event client when it stops (#825)\n\n"
    },
    {
      "commit": "5a313a3b4e716f073f55e79363e439623c0fb7ff",
      "tree": "529ce6a4b02624dd23152800a47874ee22e86ce4",
      "parents": [
        "3efdd54e865b837449a7c2c4d8a526be2fa68d60"
      ],
      "author": {
        "name": "nkprasad12",
        "email": "31296089+nkprasad12@users.noreply.github.com",
        "time": "Sat May 21 12:15:35 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 21 12:15:35 2022 -0700"
      },
      "message": "Fix typo in run_command (#810)\n\n"
    },
    {
      "commit": "3efdd54e865b837449a7c2c4d8a526be2fa68d60",
      "tree": "8021d0f139c9963c4508bfe195c76b831e1ed25b",
      "parents": [
        "9da3bce3503976210a228a863a6dcda715b2d0d1"
      ],
      "author": {
        "name": "boon",
        "email": "ohbooneng@google.com",
        "time": "Fri May 20 12:48:35 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 19 21:48:35 2022 -0700"
      },
      "message": "Create base suite class and add run_suite_class to suite runner. (#817)\n\n"
    },
    {
      "commit": "9da3bce3503976210a228a863a6dcda715b2d0d1",
      "tree": "e5197719f071eb67230faf68867e2ea6be806be5",
      "parents": [
        "913e47084f8e8dd77b862b57d651dcc384d572b8"
      ],
      "author": {
        "name": "Minghao Li",
        "email": "minghaoli@google.com",
        "time": "Fri May 20 12:21:41 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 19 21:21:41 2022 -0700"
      },
      "message": "Remove client v2\u0027s unit test\u0027s dep on subprocess (#823)\n\n"
    }
  ],
  "next": "913e47084f8e8dd77b862b57d651dcc384d572b8"
}
