)]}'
{
  "log": [
    {
      "commit": "45ac04442f0318185cdad284b1c82eee74c8f182",
      "tree": "24e38fd68938faf88962a152da45eaed294c7703",
      "parents": [
        "2fe1db6e497490908e866d29d4b33fbca3e45372"
      ],
      "author": {
        "name": "Jimi Chen",
        "email": "jimictw@google.com",
        "time": "Tue Feb 06 04:24:58 2024 +0000"
      },
      "committer": {
        "name": "Jimi Chen",
        "email": "jimictw@google.com",
        "time": "Tue Feb 20 08:08:17 2024 +0000"
      },
      "message": "Use custom defined DNS/HTTP port\n\nRefactor the test case to support listen custom DNS/HTTP port.\nAvoid binding system restricted port (\u003c1024).\n\nBug: 322113686\nTest: atest NetworkStackIntegrationTests:android.net.NetworkStatsIntegrationTest\nChange-Id: I5d3b966cdadc9321ca2ee0d04a5b8f71ee79bd8a\n"
    },
    {
      "commit": "9c3c120c6c1aea134441f53d164bd5ff828522e6",
      "tree": "a6743a1c40592dd09c0f2b892e3a1f53de011312",
      "parents": [
        "7f7135e29e835590973e1b70c1e7d9d6d8b1c851",
        "36e762640626ed59fb81aace9395a035bd1cbe8d"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Jan 31 14:29:18 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 31 14:29:18 2024 +0000"
      },
      "message": "Merge \"Add CtsConnectivityMultiDevicesTestCases for hotspot\" into main"
    },
    {
      "commit": "05bf4f398f678867b83273ff14f4d82dda9035e5",
      "tree": "ee8523b9668dfe8bd559c05a5d02b41bc50a542e",
      "parents": [
        "7b2643f65f8ea0beaf92a28a812bed9b137232a5"
      ],
      "author": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Thu Jan 25 21:51:07 2024 +0900"
      },
      "committer": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Thu Jan 25 21:55:10 2024 +0900"
      },
      "message": "clearInlineMocks from DevSdkIgnoreRunner after running test\n\nMemory leak was observed and inline mock is one of the reasons.\nThis CL updates DevSdkIgnoreRunner to clear mock state if there is no\nthread leak.\n\nTest: TH\nBug: 321603955\nChange-Id: I50fd03f14c6703bd38b5729f577d7ea516cd5b44\n"
    },
    {
      "commit": "36e762640626ed59fb81aace9395a035bd1cbe8d",
      "tree": "57b1bc9bb6adb986f21872c200541dcd478d66b0",
      "parents": [
        "9a6f8ccf287c27e63309ffc35e9996c92ad9c782"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Dec 27 18:17:30 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Jan 22 15:13:11 2024 +0800"
      },
      "message": "Add CtsConnectivityMultiDevicesTestCases for hotspot\n\nThis test is conducting two physical devices: a device\nacting as the hotspot and a separate client device. The test\nassesses whether the client can connect to the hotspot and utilize\nits internet connection.\n\nThis test verifies the basic functionality of the hotspot feature\nby exercising the entire system without mocking any component.\nThis is crucial because various system components, like cellular,\nWi-Fi, routing rules, tethering, and hardware offload, can have\nregressions or design changes that impact the basic functionality.\n\nTest: m connectivity_multi_devices_snippet \u0026\u0026 \\\n      atest CtsConnectivityMultiDevicesTestCases\n      (2 physical devices near each other are needed\n      to perform this test)\nBug: N/A\nChange-Id: Ib97495c48f313889cedae03d59762482da10cfd8\n"
    },
    {
      "commit": "24b54c2285227e8c8903d4bfdc820837ab59600a",
      "tree": "41495a32f99644173c20bd89e2821760e32b10f8",
      "parents": [
        "0c905a152edee6d015d416f80fb084fe4c9bafd9",
        "3cc222dd768efaf84f78d16fbac34ff2b7c5d917"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Jan 16 07:47:47 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 07:47:47 2024 +0000"
      },
      "message": "Merge changes from topics \"remove-napt\", \"support-multipleaddr\" into main\n\n* changes:\n  Support multiple addresses in PacketBridge\n  Remove NAPT from PacketForwarder\n"
    },
    {
      "commit": "0ca094b577a190c449fd4362bc1d05e579ea4629",
      "tree": "1f8c84a5252474c3286f884e08d3305eec29c853",
      "parents": [
        "7078ac59b9108979a2f598b77e8cfe8058ea7817"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Sep 13 16:27:12 2023 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 15 20:26:28 2024 +0900"
      },
      "message": "Fix replying to queries via unicast\n\nInstead of (wrongly) looking at the DNS message flags for the Query\nUnicast bit, look at the flag in the question record.\n\nThe previous bug means that all queries would be replied multicast\ninstead of sometimes unicast. The fix is flagged off as this is a\nbehavior change that may affect performance and latency.\n\nBug: 289482497\nTest: atest\nChange-Id: I08e30c4ffa747c9073d631e8addca1278ea40648\n"
    },
    {
      "commit": "3cc222dd768efaf84f78d16fbac34ff2b7c5d917",
      "tree": "c906c174aa9599074b63c73fd0385357a8c55f44",
      "parents": [
        "74acb88d0334a6867dd8d9e5b21b0cf4b1f94891"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Jan 10 17:19:29 2024 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Jan 15 17:54:26 2024 +0800"
      },
      "message": "Support multiple addresses in PacketBridge\n\nTest: atest NetworkStackIntegrationTests:android.net.NetworkStatsIntegrationTest\nBug: N/A\nChange-Id: Icaef559d54f8d7ce06fb9bf231330235ee01ab8f\n"
    },
    {
      "commit": "74acb88d0334a6867dd8d9e5b21b0cf4b1f94891",
      "tree": "189806d08f7b153eff923cd7199d5db5375d402c",
      "parents": [
        "c45efc312e75921ead6135b2ed6a3eb0426791b8"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Mar 30 13:27:57 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Jan 15 17:54:26 2024 +0800"
      },
      "message": "Remove NAPT from PacketForwarder\n\nConsider below scenario:\n  Internal address: 1.2.3.4\n  External address: 5.6.7.8\n  Remote address: 8.8.8.8\nWhen a packet was sent from 1.2.3.4 to 8.8.8.8, the current design\ntranslate it to a packet from 8.8.8.8 to 5.6.7.8 and foward it\nto the external interface. However, when the response is received\nfrom the external interface, there is a need to remember what is\nthe original address to forward to. Thus, an address translation\nmechanism was introduced in current design.\n\nThis change simplify PacketForwarder by removing the address\ntranslation.\nConsider, if the 2 interfaces are using the same address.\n  Internal address: 1.2.3.4\n  External address: 1.2.3.4\n  Remote address: 8.8.8.8\nWhen a packet was sent from 1.2.3.4 to 8.8.8.8, simply swap\nsource and destination and and foward it to the external\ninterface. When there is a response from the external interface,\nthe same process can be done, this removes the need of address\ntranslation.\n\nTest: atest NetworkStackIntegrationTests:android.net.NetworkStatsIntegrationTest\nTest: atest CtsHostsideNetworkTests:com.android.cts.net.HostsideVpnTests\nBug: N/A\n\nChange-Id: I86f2e774e9112905e5255b5a28c927562a42ab84\n"
    },
    {
      "commit": "c034c7217eb1dc4bdc6a2c4624d9aaa29a87bd34",
      "tree": "54bf7147f1ea31257d6713293781f9ba3ec66099",
      "parents": [
        "17f589cf47d6bd29d5b8724e25c891195fdbaa90"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Nov 15 17:12:38 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Fri Nov 17 15:05:19 2023 +0800"
      },
      "message": "Make thread leak error message more readable\n\nThis change only outputs thread count differences instead of\nlisting all threads. Additionally, it ignores threads with 1\ncount, which effectively filter out threads created\nby the test runner or other system components, such as\nhwuiTask*, queued-work-looper, SurfaceSyncGroupTimer,\nRenderThread, and Time-limited test.\n\nSample Output:\n[1122/3060] android.net.connectivity.com.android.server.CSLocalAgentCreationTests#ThreadLeakMonitor: FAILED (1ms)\n\nSTACKTRACE:\njava.lang.IllegalStateException: Unexpected thread changes: removed\u003d[] added\u003d[] updated\u003d[TestAlarmManager\u003d25,CSTestHandler\u003d25]\n\nTest: atest ConnectivityCoverageTests\n      (with shouldThreadLeakFailTest set to true)\nBug: 310581973\nBug: 307693729\nChange-Id: I085799ebbd69c29f833335684de208105302e012\n"
    },
    {
      "commit": "17f589cf47d6bd29d5b8724e25c891195fdbaa90",
      "tree": "8dc1724846ea1e1846d2560c55dfde0843d86460",
      "parents": [
        "8b61783b78a80031b6ef4b4150e964bdc9f18c64"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Nov 06 16:21:16 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Nov 15 14:03:45 2023 +0800"
      },
      "message": "Ensure no thread leak after NetworkStatsServiceTest\n\nThis change includes:\n 1. A mechanism in DevSdkIngoreRunnrer to dump thread counts\n    before/after tests, and compare thread counts to detect leaks.\n 2. Add an annotation @MonitorThreadLeak for test classes to\n    annotate the classes which should monitor thread leaks.\n 3. Annotated NetworkStatsServiceTest to apply the enforcement.\n\nSample output:\n[1/2] android.net.connectivity.com.android.server.net.NetworkStatsServiceTest#testDumpStatsMap: PASSED (1.187s)\n[2/2] android.net.connectivity.com.android.server.net.NetworkStatsServiceTest#ThreadLeakMonitor: FAILED (7ms)\n\nSTACKTRACE:\njava.lang.IllegalStateException: Expected threads: {binder:26055_3\u003d1, Instr: androidx.test.runner.AndroidJUnitRunner\u003d1, main\u003d1, InstrumentationConnectionThread\u003d1, binder:26055_2\u003d1, binder:26055_1\u003d1} but got: {binder:26055_3\u003d1, NetworkStatsObservers\u003d1, Instr: androidx.test.runner.AndroidJUnitRunner\u003d1, main\u003d1, InstrumentationConnectionThread\u003d1, binder:26055_2\u003d1, binder:26055_1\u003d1}\n\nTest: atest ConnectivityCoverageTests:android.net.connectivity.com.android.server.net.NetworkStatsServiceTest \\\n      --rerun-until-failure 100\nBug: 308544001\nBug: 307693729\nChange-Id: Ia0bccb82c5985df608b8402009b32626b6b17c5a\n"
    },
    {
      "commit": "22350c93b4bd50f74b69f12512e5d5f8a0580f54",
      "tree": "58c6b3025c03d7f3ad5d81e6552ffc2a8618759f",
      "parents": [
        "9f76411b6372774090de76c76e04dd9fe15ac22a"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Sat Oct 07 19:21:45 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Nov 07 17:29:38 2023 +0900"
      },
      "message": "Add LocalNetworkInfo and send callbacks when it changes\n\nTest: CSLocalAgentTest\nChange-Id: I8caca97b891081f9212a01d428a34ed1a08d5126\n"
    },
    {
      "commit": "626045a60133c24b83324ae857adf1f884dba209",
      "tree": "032ed7fa5dfe186c6d251e673839065e548fd5ab",
      "parents": [
        "6c83f00b09d7499949813db55a235ae3d6f2022e"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Aug 28 18:49:44 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Oct 23 20:11:02 2023 +0800"
      },
      "message": "[BR01.1] Support BpfNetMapsReader\n\nA helper class to *read* java BpfMaps. This is designed to\nprovide direct bpf access in the caller process through\nConnectivityManager APIs.\n\nThe change also removes any statical link to\nnet-utils-device-common-struct from service-connectivity.\nThis is because net-utils-device-common-struct is already\nincluded in framework-connectivity. Including it again in\nservice-connectivity would create a r8 build fail by circular\ndependency.\n\nTest: atest FrameworksNetTests:android.net.connectivity.com.android.server.BpfNetMapsTest\nTest: atest ConnectivityCoverageTests:android.net.connectivity.com.android.net.module.util.StructTest\nTest: atest FrameworksNetTests:android.net.connectivity.android.net.BpfNetMapsReaderTest\nBug: 297836825\nChange-Id: I7a6d2eb816d0dc7343167bddd672806b199f44fe\n"
    },
    {
      "commit": "d6f4efb1a8791a3c1e9c1af8dc001fc42e0ca628",
      "tree": "bbd66295a9caf596b3510141d393012e920371eb",
      "parents": [
        "5efbcf7babffbe62b1c66bda6505caf4521d9c33"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Apr 17 11:24:21 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Oct 12 13:30:49 2023 +0900"
      },
      "message": "Add hidden constants for communicating about local network agents\n\nTest: FrameworksNetTests\nChange-Id: Ic490fee6ee70d74acff0a290199b2946817173d0\n"
    },
    {
      "commit": "2aa441250389ffa9d437f4ace27797b8c8280703",
      "tree": "a9c0eb818b28895b654a5f34600e5bf0874f06f2",
      "parents": [
        "1d600f4300e956c9c54f2e2126b2d6e9776a042b"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Sep 29 15:44:59 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Sep 29 15:48:09 2023 +0900"
      },
      "message": "Address comments on aosp/2765367\n\nTest: comment-only change\nChange-Id: I788f6e9f5fdd913d4c5077b6bb82c19664d3cd3f\n"
    },
    {
      "commit": "a10ae005dfe8dac2a32cfc06f5ab1e675943702d",
      "tree": "2d2ae34b1b9b002f7b8e63427ed6a84651aae834",
      "parents": [
        "f411c022945ad3fad07d414554a391e317b62aa8"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Sep 28 20:17:40 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Sep 28 21:37:31 2023 +0900"
      },
      "message": "Have DevSdkIgnoreRunner support @Parameterized parameters\n\nTest: aosp/2405723 uses this, TH is happy with existing tests\nChange-Id: If47d7e239d8483716fb78a97bbc2da4e24731209\n"
    },
    {
      "commit": "f1846ac13b4afb91cd6f9320170e99b3ebec968c",
      "tree": "0a7e5b37cd76e7efeb99768d5410af58611cd254",
      "parents": [
        "365cf0a393daa9917bd647af3d8e0f15c5d82edc"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Sep 19 17:26:20 2023 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Sep 19 17:26:20 2023 +0900"
      },
      "message": "Check that wifi, cell validates before tests\n\nTests are sometimes run on hardware devices with wrongly configured wifi\nor cell data. Ensure that this is reported as an infra error, and not a\ntest error, so the root cause is easier to identify.\n\nBug: 264170054\nTest: atest\nChange-Id: I4f964fbd4ee497e8ac92f7729375b75b6c4594a3\n"
    },
    {
      "commit": "7bca2922b882138d6293a26fb04a2d6a3e776b1f",
      "tree": "9ec13e97f871eee9401b00e7cfb68a59dd91e943",
      "parents": [
        "1ef814da951bf4fb8ccd5089dc4f7251115710e8"
      ],
      "author": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Tue Aug 22 18:30:32 2023 +0900"
      },
      "committer": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Wed Aug 23 13:01:29 2023 +0900"
      },
      "message": "Add class to help Kotlin to pass nullable to java @NonNull for testing\n\nFollow up CL for aosp/2700076\n\nBug: 296972712\nTest: build with aosp/2688146\nChange-Id: Ib582ef41f34baf0bb896e32d681843358f928c87\n"
    },
    {
      "commit": "1d1c0e72825ac9d4b4997710e617a8533cdb012c",
      "tree": "03e1e0b778c0f3b589838f17248976340fe29de2",
      "parents": [
        "ef136ebfa10daa92a27a7fbc4c52abfee60247d9",
        "d91c89ba51b68e0121a122e7fb63754d958cb33d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Aug 21 19:04:15 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 21 19:04:15 2023 +0000"
      },
      "message": "Merge \"Fix kotlin nullable errors in net-test-utils and NetworkStaticLibTests\" into main"
    },
    {
      "commit": "10fe61b52008b5f0e1641e53d7fceebe1676a6d8",
      "tree": "68000afe08f62372f4d314159cd1f2ca914073b8",
      "parents": [
        "0622dafd7538bcb1014ed9678d01a001fed1f91e",
        "5bf2947997b5c70b48480abf0ffc260d72da07ca"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Fri Aug 18 22:32:51 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 18 22:32:51 2023 +0000"
      },
      "message": "Merge \"Improve test logs using TrackRecord backtrace\" into main"
    },
    {
      "commit": "5bf2947997b5c70b48480abf0ffc260d72da07ca",
      "tree": "878b3b1cf37c30bf82e7aaac0a6bd9d367697bc7",
      "parents": [
        "533af6d72df29114c88b2fe16b01771da1d0d70d"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Wed Aug 09 06:57:32 2023 -0700"
      },
      "committer": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Fri Aug 18 09:35:13 2023 -0700"
      },
      "message": "Improve test logs using TrackRecord backtrace\n\neventuallyExpect methods should print the received callbacks since\npoll() was called for better debugging.\n\nTest: atest EthernetManagerTest\nChange-Id: Ia08abf2436b050a7e319b9f70694ce3d132b4fc3\n"
    },
    {
      "commit": "a6e8a281a4cb314b904b6be577a7189809ada467",
      "tree": "ee2ee1922d46a5bffb7f005180c46a5935770e93",
      "parents": [
        "fa33ba6f3dde811b9ef97135f1a37849a85c687c"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 10 16:20:38 2023 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 10 16:24:48 2023 +0900"
      },
      "message": "Fix DevSdkIgnoreRule for Q-\n\nUnboundedSdkLevel stopped working on Q as it now depends on Set.of,\nwhich is an R+ API. Arguably this should be fixed as its minSdk is still\n29, but long-term UnboundedSdkLevel may drop Q support as modules now\nonly need to support R+.\n\nAvoid using UnboundedSdkLevel on Q- in DevSdkIgnoreRule: this avoids the\nabove problem, and also makes it compatible with even older builds,\nwhich may happen in GTS.\n\nBug: 292868272\nTest: all tests using this rule\nChange-Id: I5e1559d841398a6c6763283f32c9f766a3661e21\n"
    },
    {
      "commit": "d91c89ba51b68e0121a122e7fb63754d958cb33d",
      "tree": "30a5e1b7d779983196ac43c7843f8871be0a3862",
      "parents": [
        "cc5c2a648a8017cb5780843906c4b52284b9d81b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Aug 07 22:25:17 2023 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Aug 08 14:26:10 2023 -0700"
      },
      "message": "Fix kotlin nullable errors in net-test-utils and NetworkStaticLibTests\n\nFix kotlin nullable errors that were exposed by setting the retention\nof android.annotation.NonNull and android.annotation.Nullable to\nclass retention.\n\nBug: 294110802\nTest: builds\nChange-Id: I2a2c91188b64619fca190a9bd7812d32f9610abd\n"
    },
    {
      "commit": "14a8c7d913a6dc210ad0f8200993e9e09478c75e",
      "tree": "fab972698b39734dfddaedd544d1a3f4ca85a11e",
      "parents": [
        "2129040ae4b44d4f34dbe5c0462472eb86bb73fa",
        "ab3fee4246bd100a1d1d38e827d261f7f03701ba"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Jun 01 05:39:33 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 01 05:39:33 2023 +0000"
      },
      "message": "Merge \"Fix crash when socket read is interrupted\""
    },
    {
      "commit": "ab3fee4246bd100a1d1d38e827d261f7f03701ba",
      "tree": "e4f040ad53330a66bef73e4bf5fdea1871b78838",
      "parents": [
        "a1f16d02451f5c8fafbf01bc87bd930338cf3830"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Apr 12 13:53:36 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed May 31 14:14:01 2023 +0800"
      },
      "message": "Fix crash when socket read is interrupted\n\nThe exception is thrown in some normal cases e.g. interrupt()\ncalled when Os.read is blocked and waiting for the input.\nIgnore such events.\n\nTest: 1. atest NetworkStackCoverageMtsConfigTests on S device\n      2. atest com.android.cts.net.HostsideVpnTests\n      3. atest NetworkStatsIntegrationTest\nBug: 259632210\nChange-Id: Ibff41312d9c7431c2b19f780844ab3a81b48f9e8\n"
    },
    {
      "commit": "8b39bca6551edf6853887179a72fd28ed6431608",
      "tree": "53a02e9547df66d9dc64b355255294f9bdebae4b",
      "parents": [
        "a0a78d3ca51fb3ff5b3d8348dbd5229f59cde443",
        "0cd46d480d57c003e112d58131548c41de4ef191"
      ],
      "author": {
        "name": "Hansen Kurli",
        "email": "hkurli@google.com",
        "time": "Wed May 24 02:39:07 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 02:39:07 2023 +0000"
      },
      "message": "Merge \"Use ThrowingSupplier for visibleOnHandlerThread.\""
    },
    {
      "commit": "0cd46d480d57c003e112d58131548c41de4ef191",
      "tree": "5e19c6a8052b6981bf6cb3dde231be1ff720b90c",
      "parents": [
        "5b9c8cbeffd1253ecdf51b2f2be878063c6c8b81"
      ],
      "author": {
        "name": "Hansen Kurli",
        "email": "hkurli@google.com",
        "time": "Mon May 22 11:06:07 2023 +0000"
      },
      "committer": {
        "name": "Hansen Kurli",
        "email": "hkurli@google.com",
        "time": "Tue May 23 06:17:52 2023 +0000"
      },
      "message": "Use ThrowingSupplier for visibleOnHandlerThread.\n\nIn order to return values from functions that are run on the handler\nthread, use a ThrowingSupplier instead of a ThrowingRunnable.\nAlso maintain the case with ThrowingRunnable by overloading.\n\nTest: NetworkStaticLibTests\nChange-Id: Ic1b86f9f764997ce5d6848f04185194a961d1106\n"
    },
    {
      "commit": "677b663aaffc14d0fa5b19dcbc6e21271f2ce617",
      "tree": "66112aa2ca04a8ffc2b2d60a9fef353a5e38cee8",
      "parents": [
        "5b9c8cbeffd1253ecdf51b2f2be878063c6c8b81"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri May 19 18:56:03 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon May 22 17:55:11 2023 +0900"
      },
      "message": "Correctly test for an object being of the correct type\n\nThis `as? T` instruction warns that this is an unchecked cast.\nIt\u0027s unchecked in the literal sense : the compiler actually\ndoesn\u0027t check that the var is of that type. Accordingly, this\nwill only fail if `it` is null, which never happens.\n\nConcretely what that means is that Java code calling this\nmethod like\n\n  expect(AVAILABLE, network)\n\n...will actually pass for *any* callback matching the network,\nbecause the class is not checked.\n\nThankfully this code is recent and there doesn\u0027t seem to be a\nlot of tests that got accepted by this bug when they should\nhave been rejected.\n\nTest: ConnectivityServiceTest, TH\n      new test in this patch that fails before but succeeds after\nChange-Id: I2e48dae28ff92045f002cfb2798d383c9c19d5ed\n"
    },
    {
      "commit": "f01d29eae6c392fb7fc572a25cf3e4080a0cab96",
      "tree": "4a6a630874f10281f6776d3b502591dad011d1dd",
      "parents": [
        "c28e11716e326fab4cb42847c0ba58d7b053ef59",
        "bcdc972c8698e451786d025c334490bb2d954554"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Mon May 08 08:45:34 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 08:45:34 2023 +0000"
      },
      "message": "Merge \"Add packet filters for IPv6 UDP\""
    },
    {
      "commit": "810be2b4565798ece7a9bebbbd60d199cac48238",
      "tree": "60896ff256766058311d4c1eb7f34c2ff1cac28e",
      "parents": [
        "2632888a107a15e7ef92208e080d0a9200175730"
      ],
      "author": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Thu Apr 06 15:52:26 2023 -0700"
      },
      "committer": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Mon Apr 17 21:26:58 2023 +0000"
      },
      "message": "Add async BufferedFile and StreamingPacketFile impls\n\nBug: 245971639\n\nChange-Id: Ief1719262c2cb68819f6feb955e97793f3638ec0\n"
    },
    {
      "commit": "68783d0260739295a69fe7b66956e17d9ef70b68",
      "tree": "6411716b6e089acb7ed2994ef8b0b683e2d304af",
      "parents": [
        "10dd699d9f95039a64119159a350555bec44ecbc",
        "c2cf7eb82d2bb76d07e9a29b131deaba6bb13dd0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 10 04:58:22 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 10 04:58:22 2023 +0000"
      },
      "message": "Merge \"Remove pollOrThrow\""
    },
    {
      "commit": "10dd699d9f95039a64119159a350555bec44ecbc",
      "tree": "8315da2e6f0b58a79aa4a52df43d4d764da580f1",
      "parents": [
        "32a735e8fa2c761b0a5555826f274f6f106fcf09",
        "2725af813a4b1f80a15b3741d91813b9e2ef0a11"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Sat Apr 08 02:02:43 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 08 02:02:43 2023 +0000"
      },
      "message": "Merge \"Add javadoc descriptions for family of methods\""
    },
    {
      "commit": "32a735e8fa2c761b0a5555826f274f6f106fcf09",
      "tree": "b18b68baa5d1f8c40197e21a67ed1260b7e6ea8b",
      "parents": [
        "5fc2bcf360ddd3e89e85c3ef7e1a208c5d739b1a",
        "0784d5dbd1b4c3cc26473125306a3b88b15e6fab"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Sat Apr 08 02:02:22 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 08 02:02:22 2023 +0000"
      },
      "message": "Merge \"Remove eventuallyExpectOrNull\""
    },
    {
      "commit": "63ff33b9e054af76c071aebf47a1dbf43d2d3569",
      "tree": "a59510ac3bf22a2ddb4cbf663e6398fda10fcc20",
      "parents": [
        "8fef4f726af7624f49c9220e3cd84b7a4e07741a"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Mar 23 10:30:24 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Mar 28 10:37:26 2023 +0800"
      },
      "message": "[ST07] Add more documentation for PacketReflector\n\nTest: TH\nBug: 139774492\nChange-Id: I778a8392a01806da313335b8103d27295b3e96e4\n"
    },
    {
      "commit": "8fef4f726af7624f49c9220e3cd84b7a4e07741a",
      "tree": "9a64cbb5d80faee01e4ba4d9805f3b8cab7fa63b",
      "parents": [
        "86c95b49257abe6797a111ba7ae48d7f92388056"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Mar 20 10:17:05 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Mar 27 18:45:46 2023 +0800"
      },
      "message": "[ST06.2] Read http body for PUT or POST http request\n\nCurrently, the test http server will respond whenever\nhttp request is read, no matter how much data was declared\nin the Content-Length header. For tests that uses POST\nrequest to test uplink traffic this is not good enough.\n\nInvoke parseBody to read data from input stream to make\nsure the http body is read.\n\nTest: atest android.net.NetworkStatsIntegrationTest \\\n      --rerun-until-failure 100\nBug: 139774492\nChange-Id: I1b71f3e55747d104e4a8796611517d93f178321f\n"
    },
    {
      "commit": "86c95b49257abe6797a111ba7ae48d7f92388056",
      "tree": "bec00b214588066d672387bfac5931042709198f",
      "parents": [
        "460c042999b3b3b08f764225e539024210ecb767"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Mar 20 17:15:21 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Mar 27 18:25:29 2023 +0800"
      },
      "message": "[ST05.3] Support PacketBridge\n\nFor testing purposes, a TestNetworkInterface provides a\nFileDescriptor which allows content injection on the test\nnetwork. However, this could be hard to use because the\ncallers need to compose IP packets in order to inject\ncontent to the test network.\n\nIn order to remove the need of composing the IP packets,\nthis class forwards IP packets between two\nTestNetworkInterface instances. Thus, the TCP/IP headers\ncould be parsed/composed automatically by the protocol stack of\nthis additional TestNetworkInterface, while the payload is\nsupplied by the servers run on the interface.\n\nTest: 1. atest android.net.NetworkStatsIntegrationTest\n      2. atest com.android.cts.net.HostsideVpnTests\nBug: 139774492\nChange-Id: I8fe5a434d6d727a81d106a967dcdca157424e12e\n"
    },
    {
      "commit": "460c042999b3b3b08f764225e539024210ecb767",
      "tree": "cf9b76006b9fa1760f1ea1cc08e7123558955680",
      "parents": [
        "621c1b739df4be69a8aaf15f0b7c0bfbbd73856f",
        "388204218b58e663530f783128a87aa6e30703e3"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Mar 20 05:49:19 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 20 05:49:19 2023 +0000"
      },
      "message": "Merge \"Fix lint errors and adding nullability annotations in PacketReflector\""
    },
    {
      "commit": "621c1b739df4be69a8aaf15f0b7c0bfbbd73856f",
      "tree": "c3cff0ed6fe3b01a822a071ed12b005669e9d6f4",
      "parents": [
        "6ba8685aba95a732c6d2aa30db07c238f70f7b53",
        "5622c37a85bd49ca2390b9786d2c1160631d2245"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Mar 16 13:23:14 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 16 13:23:14 2023 +0000"
      },
      "message": "Merge \"[ST04.1] Move PacketReflector to static library\""
    },
    {
      "commit": "388204218b58e663530f783128a87aa6e30703e3",
      "tree": "b57494bc07c39237837d0cfbbb42754c8940cade",
      "parents": [
        "5622c37a85bd49ca2390b9786d2c1160631d2245"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Mar 15 13:36:42 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Mar 15 13:53:36 2023 +0800"
      },
      "message": "Fix lint errors and adding nullability annotations in PacketReflector\n\nThis is a no-op refactoring.\n\nTest: TH\nBug: 139774492\nChange-Id: Ibb6605a9f7add8319321e5b4960a0b9b637f1434\n"
    },
    {
      "commit": "5622c37a85bd49ca2390b9786d2c1160631d2245",
      "tree": "4048ead64720cf33beb22be158393ab7ba8de900",
      "parents": [
        "ff5ee3131415d880545c62ea7d95a43675ee7e60"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Mar 15 11:39:49 2023 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Mar 15 13:35:00 2023 +0800"
      },
      "message": "[ST04.1] Move PacketReflector to static library\n\nThis is also needed by integration test in NetworkStack module\nin follow-up CLs. Move to a common place first.\nThis is a no-op refactoring.\n\nTest: atest com.android.cts.net.HostsideVpnTests\nBug: 139774492\nChange-Id: Ifc7ed4c93edfb0f6f8eb47231f6df40332d2c10c\n"
    },
    {
      "commit": "c2cf7eb82d2bb76d07e9a29b131deaba6bb13dd0",
      "tree": "685eda839c561b2b58ef1317261f93082a757a64",
      "parents": [
        "2725af813a4b1f80a15b3741d91813b9e2ef0a11"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 27 19:13:46 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Mar 07 21:48:24 2023 +0900"
      },
      "message": "Remove pollOrThrow\n\nThis method is better removed, because it doesn\u0027t follow the\nnaming conventions we want to keep in this file. It also isn\u0027t\nuseful :\n• There is only one use of it outside tests, and it\u0027s in the\n  same file. It\u0027s trivial to inline it.\n• The method has a unit test, which becomes useless once the\n  method is inlined.\n• There is a corresponding command in the interpreter, but it\u0027s\n  only used by the unit test and therefore can be removed once\n  the unit test is removed.\n\nTest: TH\nBug: 157405399\nChange-Id: Ib5b1369ac28e4577adc98204e42ff2f27729e64c\n"
    },
    {
      "commit": "2725af813a4b1f80a15b3741d91813b9e2ef0a11",
      "tree": "4fb968691053dd142814207d323cd516bdac765b",
      "parents": [
        "0784d5dbd1b4c3cc26473125306a3b88b15e6fab"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 27 18:49:07 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Mar 07 21:48:24 2023 +0900"
      },
      "message": "Add javadoc descriptions for family of methods\n\nTest: comment-only change\nBug: 157405399\nChange-Id: I58ccb8b05a8ffb82d4575b727bb48dfb21b191fd\n"
    },
    {
      "commit": "0784d5dbd1b4c3cc26473125306a3b88b15e6fab",
      "tree": "628496bc567aeae9411a2d2a67c5adb352a7e09a",
      "parents": [
        "febf4ab6fb323b3278aba174049723f84fe7b77e"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Mar 07 21:46:50 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Mar 07 21:47:50 2023 +0900"
      },
      "message": "Remove eventuallyExpectOrNull\n\nThis is no longer used and is advantageously replaced\nby a call to poll(), which has the same semantics.\n\nTest: TH\nBug: 157405399\nChange-Id: I3182fd3e3ac749e11a8f962ef1acfdca5d031b05\n"
    },
    {
      "commit": "febf4ab6fb323b3278aba174049723f84fe7b77e",
      "tree": "338011012c0fc1f219e502d992186e623e45664b",
      "parents": [
        "ff5ee3131415d880545c62ea7d95a43675ee7e60"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 27 18:30:11 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Mar 07 21:47:11 2023 +0900"
      },
      "message": "Remove eventuallyExpectOrNull usages from AOSP\n\nThis is not useful because it has the exact same semantics\nas poll() : it returns the first event that matches the\npredicate within the timeout, or null if none.\n\nUnfortunately the method can\u0027t be removed until all\nuses in internal master are removed, so the actual\nremoval will have to wait for the next patch.\n\nTest: TH\nBug: 157405399\nChange-Id: I471c44568e359f8686dcb21ae04c76ca8095f02f\n"
    },
    {
      "commit": "2695fdf6cecc97bc3c25b8249680769ae4a53fcf",
      "tree": "a3f8d3585e5e1706aea51973101ba0d208a14664",
      "parents": [
        "0ceff621d153cc40cbfdf0eec213d5c032c8bd2d"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Feb 17 16:16:13 2023 +0900"
      },
      "committer": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Fri Feb 17 07:19:22 2023 +0000"
      },
      "message": "Bubble up exceptions in visibleOnHandlerThread\n\nTest: NetworkStaticLibTests\nFixes: 269390906\nChange-Id: I3c2d330dd719869562f437c1995e85abd32dbd68\n"
    },
    {
      "commit": "35f954324f5b1e06c1e2bf8307c27452b9390c6c",
      "tree": "32febf1007f286f37811a15a33fa1bd7002e4adc",
      "parents": [
        "c67deee9233df2bb2819c170f7b2f4a3d73264d5",
        "36e8ff3f87decc5e4121a17983cc6784c8abcd2a"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Sat Feb 11 02:09:38 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 11 02:09:38 2023 +0000"
      },
      "message": "Merge \"Remove expectLinkPropertiesThat\""
    },
    {
      "commit": "c67deee9233df2bb2819c170f7b2f4a3d73264d5",
      "tree": "d4b8bb3b2d38c2bc13ee75337ffa04e05de9d34e",
      "parents": [
        "f063240c5664d3bd701ae3cb66f9e064aa2488ec",
        "ab47793183a24fdb9ddd39a53ac9117191aff551"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Fri Feb 10 05:26:50 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 10 05:26:50 2023 +0000"
      },
      "message": "Merge changes from topics \"remove_expectblocked\", \"rename_reason\"\n\n* changes:\n  Rename BlockedStatusInt.blocked to .reason\n  Remove expectBlockedStatusCallback\n"
    },
    {
      "commit": "f063240c5664d3bd701ae3cb66f9e064aa2488ec",
      "tree": "1f3641da597503b4737061bc15b4f403baf051f6",
      "parents": [
        "cd18acab06947d10f01f247b5889fd2c5f5de5f5",
        "004c5b422bcb1457c5a06f64ec362acdb8dbea9d"
      ],
      "author": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Thu Feb 09 21:17:54 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 09 21:17:54 2023 +0000"
      },
      "message": "Merge \"Add OS access interfaces and test impl for wear tethering\""
    },
    {
      "commit": "36e8ff3f87decc5e4121a17983cc6784c8abcd2a",
      "tree": "f2021624d3fb4adfd76984b1975d61f8b0b841de",
      "parents": [
        "ab47793183a24fdb9ddd39a53ac9117191aff551"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 13 22:08:02 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 09 16:19:09 2023 +0900"
      },
      "message": "Remove expectLinkPropertiesThat\n\nexpect() is simply better\n\nBug: 157405399\nTest: ConnectivityServiceTest NetworkStaticLibTests\nChange-Id: If8da940e378722f4cde2a4e7ea3eaef3b1380f18\n"
    },
    {
      "commit": "ab47793183a24fdb9ddd39a53ac9117191aff551",
      "tree": "c630f30ace6a3b443cb591133b0de2de6a4ef957",
      "parents": [
        "12038d2e287c58a7b38603d823dacd3deeadeca1"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 13 21:55:19 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 09 16:19:09 2023 +0900"
      },
      "message": "Rename BlockedStatusInt.blocked to .reason\n\nIt\u0027s a reason, so it\u0027s a lot clearer this way\n\nBug: 157405399\nTest: ConnectivityServiceTest NetworkStaticLibTests\nChange-Id: Id71d710a33b4df3c211e40141adb2aa0a535f458\n"
    },
    {
      "commit": "12038d2e287c58a7b38603d823dacd3deeadeca1",
      "tree": "d8dab1813873e9e03a9f6faf30a5868b553353ba",
      "parents": [
        "cd18acab06947d10f01f247b5889fd2c5f5de5f5"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 13 21:47:40 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 09 16:19:09 2023 +0900"
      },
      "message": "Remove expectBlockedStatusCallback\n\nexpect() does a better job.\n\nBug: 157405399\nTest: ConnectivityServiceTest NetworkStaticLibTests\nChange-Id: I2bc4dc0f175b8d46784dbdb3a4724dea41200dc7\n"
    },
    {
      "commit": "cd18acab06947d10f01f247b5889fd2c5f5de5f5",
      "tree": "587b25e88a30c8fadaa6756fec6ebc62d5d80460",
      "parents": [
        "165c6ffbd6d4cc2fc45a5233b433198286f96ced",
        "ab521cf49daf49d09d69f83aa650989dfdaf2091"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Thu Feb 09 02:20:20 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 09 02:20:20 2023 +0000"
      },
      "message": "Merge \"Remove expectCapabilitiesWith and without\""
    },
    {
      "commit": "165c6ffbd6d4cc2fc45a5233b433198286f96ced",
      "tree": "5e590cba749d1725c34dcc0e8f68297d2db4b6d7",
      "parents": [
        "c0ba521f79360cb7d0b2a6b279447b690631fa7a",
        "bdb79c510fa3e2600cceb865d1fba12b156e7b4f"
      ],
      "author": {
        "name": "Yuyang Huang",
        "email": "yuyanghuang@google.com",
        "time": "Tue Feb 07 10:44:15 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 07 10:44:15 2023 +0000"
      },
      "message": "Merge \"Add CtsNetTestCasesMaxTargetSdk33\""
    },
    {
      "commit": "ab521cf49daf49d09d69f83aa650989dfdaf2091",
      "tree": "30dac2f94450ab1ac18865ec08ddcd390c37a121",
      "parents": [
        "c0ba521f79360cb7d0b2a6b279447b690631fa7a"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 13 20:32:54 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 06 13:49:52 2023 +0900"
      },
      "message": "Remove expectCapabilitiesWith and without\n\nThis is not clearer than using the base method.\n\nTest: ConnectivityServiceTest NetworkStaticLibTests\nBug: 157405399\nChange-Id: Iac9aeffb563d0a1cb6c1287b46b9bbfffc0c75ca\n"
    },
    {
      "commit": "c0ba521f79360cb7d0b2a6b279447b690631fa7a",
      "tree": "fd51ccd33ac7baeeb04099ea75c25696d94809cb",
      "parents": [
        "60b95c4090b270c3d15c198ac58127088689c3a1"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 13 21:33:43 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 06 13:49:51 2023 +0900"
      },
      "message": "Replace expectCapabilitiesThat with expectCaps\n\nAdd all the necessary overloads too.\n\nBug: 157405399\nTest: ConnectivityServiceTest NetworkStaticLibTests\nChange-Id: Idea768934182d4e2226c273fda0189942dcbf62e\n"
    },
    {
      "commit": "bdb79c510fa3e2600cceb865d1fba12b156e7b4f",
      "tree": "fa6a04967df9191de1edccb5fcaf866a0df12d00",
      "parents": [
        "60b95c4090b270c3d15c198ac58127088689c3a1"
      ],
      "author": {
        "name": "Yuyang Huang",
        "email": "yuyanghuang@google.com",
        "time": "Thu Feb 02 13:22:12 2023 +0900"
      },
      "committer": {
        "name": "Yuyang Huang",
        "email": "yuyanghuang@google.com",
        "time": "Thu Feb 02 13:22:12 2023 +0900"
      },
      "message": "Add CtsNetTestCasesMaxTargetSdk33\n\nThe annotation is used to verify behavior for apps with max target SDK\n33.\n\nBug: 267102290\nTest: atest CtsNetTestCasesMaxTargetSdk33\nChange-Id: I71ba4433389ba07553ea3d6d34a2bf64fdc132ad\n"
    },
    {
      "commit": "bcdc972c8698e451786d025c334490bb2d954554",
      "tree": "55131126e7d590ab82924d0c16ef2b6dac83476c",
      "parents": [
        "ccc7d37685e8ede8381fd4a9a8dcf7c7399c05cd"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 23 18:20:16 2023 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 23 18:20:44 2023 +0900"
      },
      "message": "Add packet filters for IPv6 UDP\n\nThis is useful to test mDNS.\n\nBug: 266151066\nTest: atest NsdManagerTest (with related change)\nChange-Id: I790da3f3be5277f2480600cfbbaeac86c306f77d\n"
    },
    {
      "commit": "004c5b422bcb1457c5a06f64ec362acdb8dbea9d",
      "tree": "418146640b05927b287bec9e85e1cf4e6d59e9a0",
      "parents": [
        "ccc7d37685e8ede8381fd4a9a8dcf7c7399c05cd"
      ],
      "author": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Thu Jan 05 19:25:18 2023 -0800"
      },
      "committer": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Fri Jan 13 17:57:01 2023 +0000"
      },
      "message": "Add OS access interfaces and test impl for wear tethering\n\nBug: 245971639\n\nChange-Id: I750c2e9bbe8c9a3992ae91d9fea4958bfce60828\n"
    },
    {
      "commit": "5987fc4fbe986a38ffbf4c9a6806ba072cfbf5fb",
      "tree": "bc344f7ba88d5ee33dab0e8e3db78c72a0b18aa2",
      "parents": [
        "d2819de4d7b4397db0325f73ec2f652377cf58e2"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 06 15:23:57 2023 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 06 16:50:08 2023 +0900"
      },
      "message": "Cleanup TestableNetworkCallback#assertNoCallback\n\nTest: FrameworksNetTests\n      CtsNetTestCases\n      FrameworksNetIntegrationTests\n      NetworkStackTests\n      NetworkStaticLibTests\n      TetheringTests\n      MtsTetheringTestLatestSdk\n      TetheringIntegrationTests\nBug: 157405399\nChange-Id: I43eb47bbcf947899c18fcd9498c9064edceb0ecf\n"
    },
    {
      "commit": "9f7d45203f34a33d1e5268af9a828ebe11b5fe6e",
      "tree": "c3137faac5057c17438292defd9eaa02a500e6dd",
      "parents": [
        "f219efb1240b886c727c3e77e032997c62d3f9db"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Dec 20 20:39:33 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Dec 22 16:17:22 2022 +0900"
      },
      "message": "Introduce visibleOnHandlerThread\n\nThis is a helper function that lets a caller make sure the\nside effects of a piece of code are visible both on a handler\nthread and in the caller thread before continuing.\n\nAlso move HandlerUtilsTests to the tests directory of\nframeworks/libs/net from the NetworkStack where it used to be\n\nTest: NetworkStaticLibTests\nChange-Id: Icf1bd8bbe1216777c52b73cfbd0a46b647b72260\n"
    },
    {
      "commit": "4045840fd453c533856b36b79983ae9d74d1a09b",
      "tree": "5e251e84b66fd1bbec7da8a9cab41f935c1aabf6",
      "parents": [
        "7e3cdf9ef2df131a3e04f780e2732c8e9e5cf19a"
      ],
      "author": {
        "name": "lucaslin",
        "email": "lucaslin@google.com",
        "time": "Tue Dec 20 02:59:41 2022 +0000"
      },
      "committer": {
        "name": "lucaslin",
        "email": "lucaslin@google.com",
        "time": "Tue Dec 20 02:59:41 2022 +0000"
      },
      "message": "Add @JvmOverloads for eventuallyExpect and expectAvailableCallbacks\n\nIt\u0027s useful for the java code to have the overload methods for\neventuallyExpect and expectAvailableCallbacks.\n\nBug: 231749077\nTest: atest CtsHostsideNetworkTests:HostsideVpnTests\nChange-Id: I6bb1385ee84d1ff1e9f0472e6de3f452ab142958\n"
    },
    {
      "commit": "70b03f92998e7988bce5ccc9470d7bb5a9eab4c8",
      "tree": "f83086f99c4d7026f0accb4d26f32171b44dc8ae",
      "parents": [
        "3d4eb94be5c3e3f65d625e6135c18cf118d112ce"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Nov 17 15:18:27 2022 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Dec 14 14:01:31 2022 +0800"
      },
      "message": "Interrupt thread before closing socket\n\nTest failed when socket.close() ran, and in the other thread\nwe are trying to initialize an InetSocketAddress. If the socket\nwas closed, the port got from the socket object becomes -1 hence\nthe InetSocketAddress cannot be constructed and the\nIllegalArgumentException would be thrown.\n\nInterrupt thread before closing socket to prevent from the race.\n\nTest: atest TestDnsServerTest --rerun-until-failure 1000\nFix: 259160848\nChange-Id: I219ee1e32144ba9983a28765e7a84621c27c1c09\n"
    },
    {
      "commit": "3d4eb94be5c3e3f65d625e6135c18cf118d112ce",
      "tree": "5900cc2acca5c73439bc0680431d76087e96f785",
      "parents": [
        "0a9506978a63014a716a0727a474e0c4d05f18df"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Aug 09 14:36:59 2022 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Dec 13 16:15:46 2022 +0800"
      },
      "message": "[ST03] Add test dns server for integration tests\n\nThis is re-upload of aosp/1390056, CL that fixes test is separated\nin a follow-up CL that submit at the same time.\n\nBug: 139774492\nTest: atest DnsAnswerProviderTest TestDnsServerTest\nChange-Id: Ia72975f3044f009ebb0f4564a527830268a4a157\n"
    },
    {
      "commit": "c79a231a16fa6c28270b7e2aa759f44e27d6799f",
      "tree": "6cd612771e68371ef90d1e355be2d97b0147f0e4",
      "parents": [
        "8228246ad0de9f16d245e23c8066c8f806c1e1ac"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Nov 25 15:52:03 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Nov 25 15:52:03 2022 +0900"
      },
      "message": "Add the name of the expected callback\n\nBefore :\n  java.lang.AssertionError: Did not receive callback after 5000\nAfter :\n  java.lang.AssertionError: Did not receive Available after 5000ms\n\nTest: manual\nChange-Id: If46d52cb0db8ea3d418169ea330d915d835e4373\n"
    },
    {
      "commit": "8228246ad0de9f16d245e23c8066c8f806c1e1ac",
      "tree": "86ba595c78151a5890ecc1225b6bfde9f3e22c5f",
      "parents": [
        "55de7e4c84dfb2fae7559f2ff2ea3bd5447f82c6",
        "88c48e18e4eeddc2fc8e588ed42697680d79b6d4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 16 05:13:03 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 16 05:13:03 2022 +0000"
      },
      "message": "Merge \"Revert \"[ST03] Add test dns server for integration tests\"\""
    },
    {
      "commit": "88c48e18e4eeddc2fc8e588ed42697680d79b6d4",
      "tree": "9b8269ad1ee6495d3af91bc77105857eddd2f316",
      "parents": [
        "be99103196c25c34ccd55d3a8af95479e52ecff1"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Nov 15 05:55:15 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 15 05:55:27 2022 +0000"
      },
      "message": "Revert \"[ST03] Add test dns server for integration tests\"\n\nRevert \"[ST03.1] Add DnsAnswerProviderTest\"\n\nRevert submission 1390056-st03\n\nReason for revert: test failed in presubmit, still under checking.\nReverted Changes:\nIa5039a47f:[ST03] Add test dns server for integration tests\nI9157e030c:[ST03.1] Add DnsAnswerProviderTest\n\nChange-Id: I1ff291ca62e2209343ed5c5e4aa3bf3e93229f47\n"
    },
    {
      "commit": "40b76e8baca25809aeb48834ee30c6f1265e5f22",
      "tree": "3f8b1ead92c0fb7f69a4a00ee58e80e61886509e",
      "parents": [
        "1a81ae4eb984c5bc63c4160b4f0055a4ce0e92ce",
        "be99103196c25c34ccd55d3a8af95479e52ecff1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 14 14:01:12 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 14:01:12 2022 +0000"
      },
      "message": "Merge \"[ST03] Add test dns server for integration tests\""
    },
    {
      "commit": "1a81ae4eb984c5bc63c4160b4f0055a4ce0e92ce",
      "tree": "5f44fb55077b0b6d2c138e2c4d2c3161bcf0307a",
      "parents": [
        "c32afc4238456f5f3a80e1409d4333f275fe2379",
        "7356d356fbf299dc2af281ac4179be9f2462f331"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 14 09:34:58 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 09:34:58 2022 +0000"
      },
      "message": "Merge \"Move DeviceConfigRule to libs/net\""
    },
    {
      "commit": "c32afc4238456f5f3a80e1409d4333f275fe2379",
      "tree": "531555bc5350e25aabcb086a52eb24bcca0aa61c",
      "parents": [
        "664e53bd888d13358be71a7f1b7f159a1d52f814",
        "53a6b7053dbb8f078f4538628d2bd0cc9061c42e"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Mon Nov 14 05:55:58 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 05:55:58 2022 +0000"
      },
      "message": "Merge \"Add eventuallyExpect method that takes mark\""
    },
    {
      "commit": "664e53bd888d13358be71a7f1b7f159a1d52f814",
      "tree": "c08cc33dc8c541fe725ce41d2214d0fc834cf0e5",
      "parents": [
        "91e4845301c228acaaf9413ab778e32a1472d792",
        "0eac837b012e93b6a48b0a648d4b1f63db3bd259"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Fri Nov 11 03:17:42 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 03:17:42 2022 +0000"
      },
      "message": "Merge \"[CC08] Remove expectCallback*\""
    },
    {
      "commit": "7356d356fbf299dc2af281ac4179be9f2462f331",
      "tree": "f9b1a4e64167fe1d8f17a1504ca5776077ec80ba",
      "parents": [
        "91e4845301c228acaaf9413ab778e32a1472d792"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Nov 08 11:45:42 2022 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Nov 10 18:10:24 2022 +0900"
      },
      "message": "Move DeviceConfigRule to libs/net\n\nThe utility can be useful for tests in several repositories, not just\nCTS.\n\nTest: m\nChange-Id: Id4c653793e58d91d604b388a06a7c137ed020110\n"
    },
    {
      "commit": "53a6b7053dbb8f078f4538628d2bd0cc9061c42e",
      "tree": "d60dd499d21a0be07461718662c17c5620333a98",
      "parents": [
        "e766a09b798f8fba836dcc9d7888bd354fcafe2f"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Nov 02 18:01:51 2022 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Thu Nov 10 14:35:29 2022 +0800"
      },
      "message": "Add eventuallyExpect method that takes mark\n\nTest: atest CtsNetTestCases:android.net.cts.ConnectivityManagerTest\nFix: 254188130\nChange-Id: I98ea8aef5cb21ee92ce47d97d2f9c81448b1cd9e\n"
    },
    {
      "commit": "be99103196c25c34ccd55d3a8af95479e52ecff1",
      "tree": "1b77df8ed01f075e51e49f3e6239dc49d1d49c8a",
      "parents": [
        "e766a09b798f8fba836dcc9d7888bd354fcafe2f"
      ],
      "author": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Tue Aug 09 14:36:59 2022 +0800"
      },
      "committer": {
        "name": "Junyu Lai",
        "email": "junyulai@google.com",
        "time": "Wed Nov 02 11:18:48 2022 +0800"
      },
      "message": "[ST03] Add test dns server for integration tests\n\nBug: 139774492\nTest: atest DnsAnswerProviderTest TestDnsServerTest\nChange-Id: Ia5039a47f4b818efb09aab8174beb9d921339c3d\n"
    },
    {
      "commit": "97d0f3a563ed980831b63d1b04b5cdbb97e1a47d",
      "tree": "dc00b6256c25c28a16c12f479740aca138a621a8",
      "parents": [
        "4bc5fd7ad392f520bc6c1d1f87ea45fbab3a534e",
        "b5e9e3fc2b9aa514aff7f387746069c5dd12960b"
      ],
      "author": {
        "name": "Chiachang Wang",
        "email": "chiachangwang@google.com",
        "time": "Mon Oct 31 01:38:57 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 31 01:38:57 2022 +0000"
      },
      "message": "Merge \"Add debug log in ensureWifiConnected\""
    },
    {
      "commit": "b5e9e3fc2b9aa514aff7f387746069c5dd12960b",
      "tree": "36ecdaa3c522ae8bf65f0923944f44019d62186d",
      "parents": [
        "8d656995338f63354fdcf8519eab406419b3e294"
      ],
      "author": {
        "name": "chiachangwang",
        "email": "chiachangwang@google.com",
        "time": "Fri Oct 28 00:36:54 2022 +0000"
      },
      "committer": {
        "name": "chiachangwang",
        "email": "chiachangwang@google.com",
        "time": "Fri Oct 28 01:13:40 2022 +0000"
      },
      "message": "Add debug log in ensureWifiConnected\n\nIt\u0027s sometimes not clear that tests call ensureWifiConnected\nbut no wifi enabled. It\u0027s hard to clarify design with wifi\nstack, so add the gotten wifi info in the log to help on\ndebugging.\n\nBug: 252869312\nTest: atest CtsNetTestCases\nChange-Id: I3bc74dd38dd5a36a93510fc5d70c0fa00b66e842\n"
    },
    {
      "commit": "9c549c0d53b58d3b8bcd2be31def76b833bbaa95",
      "tree": "f4050038723a61c7c6ca356b435ec046cef4b87f",
      "parents": [
        "281e7a2587de7efedc2e717a6697513670a25a40",
        "f4dd77109e7c0c65f7d8d1882c401a275d1c7692"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 26 21:09:23 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 26 21:09:23 2022 +0000"
      },
      "message": "Merge \"Fix errorprone warnings that should be errors\""
    },
    {
      "commit": "0eac837b012e93b6a48b0a648d4b1f63db3bd259",
      "tree": "cbc2cc319ff9db99e0762a2cdce790e9ec82083a",
      "parents": [
        "6f8bcae7d0d3ff4935ef083831c1e80bd8d1f484"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Oct 21 11:54:55 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Oct 24 18:54:46 2022 +0900"
      },
      "message": "[CC08] Remove expectCallback*\n\nThese methods have been migrated to the shorter and better\nprovisioned expect\u003c\u003e family of methods.\n\nTest: Builds\nChange-Id: I60c77bfeabe373557d61f0f8d0295b385fe5271e\n"
    },
    {
      "commit": "6f8bcae7d0d3ff4935ef083831c1e80bd8d1f484",
      "tree": "079627e77faec5a86649da074ff9a464327589c5",
      "parents": [
        "041f81ec850e42d69eb13d913969383baae43720"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Oct 24 17:52:57 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Oct 24 18:54:45 2022 +0900"
      },
      "message": "[CC07] Add build tests for expect* versions\n\nAlso address some comments left on a previous patchset.\n\nTest: NetworkStaticLibTests\nChange-Id: I3ea16bb54aec31ddb0368af980483109a1bdb49b\n"
    },
    {
      "commit": "347dd8ded4225f2c21e2fddd867316e87f80d7a2",
      "tree": "2bfd9b5bec551477122f88e38b1d61dfce705e1d",
      "parents": [
        "f79ca2809a9a7bc2f6b705ff558b7bf7984b79f7"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Oct 20 16:29:06 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Oct 20 16:42:16 2022 +0900"
      },
      "message": "Increase the timeout for eventuallyExpect\n\nSometimes the tests are run under high load, e.g. immediately\nafter boot while all apps that listen for the boot completed\nbroadcast run their listeners. Under these circumstances,\n40ms of leeway is tight ; on recent Android devices HZ is\ncommonly 100 too, meaning a general time unit of 60 will give\na little bit of air.\n\nThe drawback in this is that the test is less stringent on\nTrackRecord, which as a multi-thread primitive should have\nreally tight tests to make sure that a non-threading primitive\n(e.g. a polling implementation) doesn\u0027t pass. This patch makes\nthe testing on that front a little bit less reliable.\n\nNote that this patch won\u0027t actually fix all flakes in that it\nisn\u0027t really possible to guarantee the device will have any\nCPU time to run the test at all anyway, but this should make\nmost failures go away.\n\nAlso, the argument for the time unit is never used, and can\nbe removed ; at least, the possibility of the timeArg() func\nnot using the same value as the sleep directive is scary, so\nthat possibility should be removed. If the time unit argument\nis ever needed it can be added back, but considering the arg\nhas been available for years and never used, it\u0027s unlikely.\n\nTest: NetworkStaticLibTests\nFixes: 254188131\nChange-Id: Ia7a4fe775942484dcd7dc223c7710e82a8329beb\n"
    },
    {
      "commit": "f79ca2809a9a7bc2f6b705ff558b7bf7984b79f7",
      "tree": "3f06cae0bd5c9ca9b66459ebd7a489e5f935bee6",
      "parents": [
        "b7e2284acf6e5e70a5f3b10d361b94f4fe32f000"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Oct 19 15:46:35 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Oct 19 15:46:35 2022 +0900"
      },
      "message": "[CC04] Have TestNetworkTracker implement HasNetwork\n\nThis already has all necessary methods, it only needs to\ndeclare it implements the interface.\n\nTest: ConnectivityServiceTest\nChange-Id: I8de643f2b8de9765c25c3efe934c94549f341a51\n"
    },
    {
      "commit": "b7e2284acf6e5e70a5f3b10d361b94f4fe32f000",
      "tree": "446cd687dc9a15d21f02d4aaae8b5388cfbfcb9a",
      "parents": [
        "70c62e594a0ec0afec617a3b1245fa25b6b944fa"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Sep 30 13:39:30 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Oct 18 20:18:46 2022 +0900"
      },
      "message": "[CC03] Replace expectCallback* with expect\n\n\"callback\" is redundant – it\u0027s a TestCallback object and\nit takes a type of callback anyway.\n\n\"assertNextIs\" is shorter than expectCallback, and more\ndirectly explicit than \"expect\", but it\u0027s also 3 words\nand very different from previous usage.\nUsing expect() is a little bit less in-your-face obvious,\nbut it\u0027s simple, familiar, and short.\n\nTest: CtsNetTestCases\n      FrameworksNetIntegrationTests\n      FrameworksNetTests\n      NetworkStackTests\nBug: 157405399\nChange-Id: I6c8c85a8be3895dd8f0ef681faa4a8b2b4f2f493\n"
    },
    {
      "commit": "70c62e594a0ec0afec617a3b1245fa25b6b944fa",
      "tree": "eb6a4d4993c113e180f511b6dc5ad1209d74581f",
      "parents": [
        "4152f83b27a06d3aae07d66c3c720b9e353aa01b"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Sep 29 20:06:44 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Oct 17 14:51:53 2022 +0900"
      },
      "message": "[CC01] Remove the confusing pollForNextCallback\n\nIn Java, \"poll\" methods return null when the collection is\nempty. Respect this convention.\n\nBug: 157405399\nTest: FrameworksNetTests\nChange-Id: I3b17908f9ce1f60b18908605a645da3199c010b9\n"
    },
    {
      "commit": "f4dd77109e7c0c65f7d8d1882c401a275d1c7692",
      "tree": "78e0ecfde9b274de5d15d1e42b839ae5063a6b5d",
      "parents": [
        "45b9d2d0f9c09087e7c5f42ecb8f5d5b6d7d444d"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Sat Oct 15 21:33:31 2022 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Sat Oct 15 21:33:31 2022 -0700"
      },
      "message": "Fix errorprone warnings that should be errors\n\nThis commit is part of a large scale change to fix errorprone\nerrors that have been downgraded to warnings in the android\nsource tree, so that they can be promoted to errors again.\nThe full list of changes include the following, but not all\nwill be present in any one individual commit:\n\nBadAnnotationImplementation\nBadShiftAmount\nBanJNDI\nBoxedPrimitiveEquality\nComparableType\nComplexBooleanConstant\nCollectionToArraySafeParameter\nConditionalExpressionNumericPromotion\nDangerousLiteralNull\nDoubleBraceInitialization\nDurationFrom\nDurationTemporalUnit\nEmptyTopLevelDeclaration\nEqualsNull\nEqualsReference\nFormatString\nFromTemporalAccessor\nGetClassOnAnnotation\nGetClassOnClass\nHashtableContains\nIdentityBinaryExpression\nIdentityHashMapBoxing\nInstantTemporalUnit\nInvalidTimeZoneID\nInvalidZoneId\nIsInstanceIncompatibleType\nJUnitParameterMethodNotFound\nLockOnBoxedPrimitive\nMathRoundIntLong\nMislabeledAndroidString\nMisusedDayOfYear\nMissingSuperCall\nMisusedWeekYear\nModifyingCollectionWithItself\nNoCanIgnoreReturnValueOnClasses\nNonRuntimeAnnotation\nNullableOnContainingClass\nNullTernary\nOverridesJavaxInjectableMethod\nParcelableCreator\nPeriodFrom\nPreconditionsInvalidPlaceholder\nProtoBuilderReturnValueIgnored\nProtoFieldNullComparison\nRandomModInteger\nRectIntersectReturnValueIgnored\nReturnValueIgnored\nSelfAssignment\nSelfComparison\nSelfEquals\nSizeGreaterThanOrEqualsZero\nStringBuilderInitWithChar\nTreeToString\nTryFailThrowable\nUnnecessaryCheckNotNull\nUnusedCollectionModifiedInPlace\nXorPower\n\nSee https://errorprone.info/bugpatterns for more\ninformation on the checks.\n\nBug: 253827323\nTest: m RUN_ERROR_PRONE\u003dtrue javac-check\nChange-Id: I772563b5e54b468a755520d2ed9b78bcb5fc3ad6\n"
    },
    {
      "commit": "8d656995338f63354fdcf8519eab406419b3e294",
      "tree": "2c87914f9307f592abf4f593821d6737a02663a9",
      "parents": [
        "45b9d2d0f9c09087e7c5f42ecb8f5d5b6d7d444d"
      ],
      "author": {
        "name": "chiachangwang",
        "email": "chiachangwang@google.com",
        "time": "Wed Oct 12 14:10:29 2022 +0000"
      },
      "committer": {
        "name": "Chiachang Wang",
        "email": "chiachangwang@google.com",
        "time": "Wed Oct 12 14:14:49 2022 +0000"
      },
      "message": "Correct failed log in ensureWifiConnected()\n\nThe timeout is used in the test should be WIFI_CONNECT_TIMEOUT_MS\nbut log shows WIFI_CONNECT_INTERVAL_MS instead. The debug log is\nconfusing. Correct it to right variable.\n\nTest: atest CtsNetTestCases\nChange-Id: I4cedaa6e03aea6cc02a07bdbea2f0b1e7f5076e1\n"
    },
    {
      "commit": "561b97e711c0bb051c88b93db8582873f209bcbd",
      "tree": "82d991c1b8d4e5782d7c9fcc2a887e57a42e622e",
      "parents": [
        "e766a09b798f8fba836dcc9d7888bd354fcafe2f"
      ],
      "author": {
        "name": "Paul Hu",
        "email": "paulhu@google.com",
        "time": "Mon Sep 19 10:22:14 2022 +0800"
      },
      "committer": {
        "name": "Paul Hu",
        "email": "paulhu@google.com",
        "time": "Tue Oct 04 07:05:14 2022 +0000"
      },
      "message": "Enlarge the TestableNetworkCallback default timeout\n\nTestableNetworkCallback is using on both unit and cts tests with\nsame timeout 200ms. For unit tests, most of objects are mock, so\nthe callback should respond quickly and this interval is fine.\nBut for cts tests, they are running on the real system and the\ncallback time will depend on the system which may be over 200 ms\nsometimes if the system is busy or has performance problems. So\nenlarge the Network Callback default timeout to 500ms that can\nreduce the test flake on cts tests. To ensure there is no impact\non no callback check, add the no callback timeout 200ms which is\nthe same timeout as before.\n\nBug: 245000567\nTest: Run the FrameworksNetTests CtsNetTestCases and check\n      no running time increase.\nChange-Id: I31f8bc08f65a622f6ab9b6c7f0577f0b107440c1\n"
    },
    {
      "commit": "a804f3fc1edeb585c6b1b9204664d4e524cfb4a1",
      "tree": "3149373cedb5de129bfddbca0b4826ecfdbb023e",
      "parents": [
        "3113f36a89ca669b60ee7bc2492843435723a6d6",
        "9df957f80320849dd888aa78adf73aab7ac348f5"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Thu Sep 01 03:01:40 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 01 03:01:40 2022 +0000"
      },
      "message": "Merge changes I506872f7,I0afb6513\n\n* changes:\n  Improve documentation for the concurrent interpreter\n  Fix a flake due to uncertainties in time measurement\n"
    },
    {
      "commit": "9df957f80320849dd888aa78adf73aab7ac348f5",
      "tree": "6d894c707e87ab04fa05b89aced94bed3728d16c",
      "parents": [
        "6f469c8e9d33c0c3461ae52e42c44be986cde6e2"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Aug 23 16:56:39 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Aug 30 18:32:54 2022 +0900"
      },
      "message": "Improve documentation for the concurrent interpreter\n\nTest: comment-only change\nChange-Id: I506872f7ff83b8c99527ff593eecc8fdc6760b53\n"
    },
    {
      "commit": "6f469c8e9d33c0c3461ae52e42c44be986cde6e2",
      "tree": "35537b511d0ea762196ed54cc39a6d9b78938b2a",
      "parents": [
        "dcaec67bb93e6cb9adfb7fdc22130bac9e2f731b"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Aug 18 19:25:42 2022 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Aug 30 18:32:52 2022 +0900"
      },
      "message": "Fix a flake due to uncertainties in time measurement\n\nThe concurrent interpreter supports a `time` directive that\nlets testers ensure some instruction has taken at least some\namount of time. This is useful when testing that some\ncallback didn\u0027t arrive before it was sent, for example.\n\nUnfortunately, there is some unavoidable uncertainty in how\ntime is measured. Because the thread that measures time\nneeds a very small amount of time before it starts measuring\nthe time taken by its instruction, it is possible that the\ntime that is intended to be measured actually took X, but\nbecause the measuring thread took Ɛ before it started\nmeasuring time, the measured time is X - Ɛ, which may fail\nthe test because it didn\u0027t take enough time.\n\nBecause there is no way at all to know how much time passed\nbetween the measuring thread being woken up and it measuring\nstart time, it\u0027s not possible to fix this as long as the\nmeasure for the minimum time is taken after the wait. So\ninstead, take the measure before the wait.\n\nIt\u0027s always technically possible that there is a bug where\nthe code doesn\u0027t take enough time, but the test doesn\u0027t\ncatch it because the device happened to run slowly as it\nran the test (e.g. other stuff running at the same time),\nand this patch makes it a little worse – there will be more\ntrue negatives, but this is the only way to ensure no false\npositives and it should still catch the \"too fast\" cases\nmost of the time.\n\nNow, each thread has its own \"blocked\" time. It would be\npossible to store that time in a local and pass it down to\nall instructions, but that would require all instructions\nto take the blocked time as an argument, while only the\n`time` instruction can have any meaningful use of it.\nTherefore, store it in a thread local instead of adding an\nargument to all instructions for all interpreters.\n\nTest: atest --iterations 100 \u0027TestableNetworkCallbackTest#testPollForNextCallback\u0027\n      ...although I can\u0027t get it to fail locally, so the\n      proof will be in a dying out of the flakes.\n      Also checked that increasing the minimum time on an\n      existing test does fail as expected\nBug: 185735163\nChange-Id: I0afb651337a8b10a864cc5bc793d65d2ce56ab20\n"
    },
    {
      "commit": "3d835e9a8e85b98a4958282ee36efefaf9364a02",
      "tree": "40ee12d1149a5ec47a248059b419b4b4daec0290",
      "parents": [
        "fdfaa30146acd399e9e69d9f1a3d0b1994e36d40"
      ],
      "author": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Wed Aug 24 12:38:02 2022 +0900"
      },
      "committer": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Thu Aug 25 11:01:25 2022 +0900"
      },
      "message": "TestBpfMap implements IBpfMap instead of extends BpfMap\n\nBug: 217624062\nTest: m, atest BpfCoordinatorTest BpfNetMapsTest\nChange-Id: I41153a569d79031f0841432c6e83bef2170a33e4\n"
    },
    {
      "commit": "a19f85124e4deff0432565183a53efef81b2ca9c",
      "tree": "13e8904fb2f23dce7cfdf0c5230fc07be0f09893",
      "parents": [
        "0b3378b7d4dfdd46692bee750f0eaa0dafafad68"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Aug 04 21:56:45 2021 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Aug 16 18:53:17 2022 +0900"
      },
      "message": "Add Function3\n\n...and rename ExceptionUtils to FunctionalUtils as the old name\nwould no longer be appropriate.\n\nTest: FrameworksNetTests\nChange-Id: I2affd69fb84d7f250b4a45497eec6c052bf6ec50\n"
    },
    {
      "commit": "0b3378b7d4dfdd46692bee750f0eaa0dafafad68",
      "tree": "80a7d2587d966b43c9fab370d4b744e2b68018c0",
      "parents": [
        "1ea73473436a9c90ed50830b30a2468c9a5b324d"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Aug 03 15:54:23 2022 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Aug 03 17:24:11 2022 +0900"
      },
      "message": "Randomize the prefix used by RouterAdvertisementResponder.\n\nCurrently RouterAdvertisementResponder always uses a prefix of\n2001:db8::/64, even if there are multiple instances on different\ninterfaces. Randomize the prefix instead.\n\nTest: TH\nBug: 240323229\nChange-Id: I585ca804845f4278187602a6c9816470dcea04f8\n"
    },
    {
      "commit": "1ea73473436a9c90ed50830b30a2468c9a5b324d",
      "tree": "fd5a5f19e56855ca4d276ac28f822203ede734a3",
      "parents": [
        "4a76563701385b4fbd70e54e83c528e60cfd1cb1",
        "12ac792079d4c9a3fbc2132ef9cdb59a9e67732a"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jul 29 08:09:54 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 29 08:09:54 2022 +0000"
      },
      "message": "Merge \"Add CtsNetTestCasesMaxTargetSdk30\""
    },
    {
      "commit": "4a76563701385b4fbd70e54e83c528e60cfd1cb1",
      "tree": "9047beaeaccd3a06313deeb216053f1330ecbe25",
      "parents": [
        "a5500c6d058c9233621acba0969fbe258c127280"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 28 15:47:17 2022 -0700"
      },
      "committer": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 28 15:50:50 2022 -0700"
      },
      "message": "RaResponder: log instead of throw exception\n\nThrowing an exception in RaResponder crashes the test process (as it\nruns in a secondary thread). This is not very useful as that will fail\nthe execution of all the other tests.\nAdding a log statement instead of throwing an exception makes more sense\nas the tests will most likely fail anyways.\n\nTest: atest EthernetManagerTest\nChange-Id: I9c5f5dc417dad7df1c7f729caa4e0259ed71591f\n"
    },
    {
      "commit": "a5500c6d058c9233621acba0969fbe258c127280",
      "tree": "e1ac45b8e029f81f54c21b4a4886824dbc456c9e",
      "parents": [
        "7174d9d82cfe41803dfc0470d4fd6559bfd57033"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 28 15:43:21 2022 -0700"
      },
      "committer": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 28 15:50:50 2022 -0700"
      },
      "message": "PacketResponder: stop should wait for thread to join\n\nstop() calls interrupt which does not terminate the thread instantly.\nTherefore, it should wait for the thread to join, as otherwise the\ncaller has no way of knowing when it is safe to close the underlying fd.\n\nThis led to frequent test process crashes during EthernetManagerTest\nruns.\n\nTest: atest EthernetManagerTest\nChange-Id: I28f0d46c4f0295acffa5ec9f04964cd73d3de928\n"
    },
    {
      "commit": "3015965660c05c2b1dc3837cec556f694de1bdc5",
      "tree": "8a68e4e589a692857c9616fa6ad8b6f63ddd534c",
      "parents": [
        "30a1808c1bf0f5be9ad92090b3d8ef23540db906",
        "53165692caa29ee7c37b098cc2df26d8aa0298bb"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Mon Jul 25 23:07:01 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 25 23:07:01 2022 +0000"
      },
      "message": "Merge \"RaResponder: add slla option to RA\""
    },
    {
      "commit": "56cb967f259c0ea5628a71f29abda50f13cc251c",
      "tree": "73684358741800b38d9883c16d9f3918b829e464",
      "parents": [
        "763aef526664977e1d3e79a4baf37db7d0d19bb7",
        "406063f0e2753138dd2b91b4237817b8e0dc9ce1"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Fri Jul 22 19:08:57 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 22 19:08:57 2022 +0000"
      },
      "message": "Merge \"RaResponder: add support for NS/NA for tests\""
    },
    {
      "commit": "763aef526664977e1d3e79a4baf37db7d0d19bb7",
      "tree": "8050838c1c6f9b7e5758b7ec971b6da05c36f648",
      "parents": [
        "a5aea220d7766c0aaa16b4ff57482c878092328d",
        "de5e402e48622fe2ece92bb79530d25255831210"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 22 11:01:02 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 22 11:01:02 2022 +0000"
      },
      "message": "Merge \"Use UnboundedSdkLevel for DevSdkIgnoreRule\""
    },
    {
      "commit": "53165692caa29ee7c37b098cc2df26d8aa0298bb",
      "tree": "2d0f057129343611ad21589c43d6ce0f6d48ee26",
      "parents": [
        "406063f0e2753138dd2b91b4237817b8e0dc9ce1"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Tue Jul 19 19:30:50 2022 -0700"
      },
      "committer": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 21 12:21:46 2022 -0700"
      },
      "message": "RaResponder: add slla option to RA\n\nTest: test only change\nChange-Id: I75beb79cd95489c8a93bd930eb54fc0cb8168cdf\n"
    },
    {
      "commit": "406063f0e2753138dd2b91b4237817b8e0dc9ce1",
      "tree": "4c0685d1e626ca3157d055eeaf4f165ab8ee7641",
      "parents": [
        "bfb9c4f4be570bc27f80d9ffc8274ea7f019240d"
      ],
      "author": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 07 16:22:27 2022 -0700"
      },
      "committer": {
        "name": "Patrick Rohr",
        "email": "prohr@google.com",
        "time": "Thu Jul 21 12:21:46 2022 -0700"
      },
      "message": "RaResponder: add support for NS/NA for tests\n\nAdd support to respond to neighbor solicitations in addition to router\nsolicitations. This is useful for tests that need to send IPv6 traffic\nthrough a tap interface. I have previously experimented with the target\nlink-layer address option in the RA, but it did not seem to prevent a\nsubsequent NS.\n\nAs a TODO, this class should be renamed to NdResponder (and possibly\nrewritten in Kotlin).\n\nTest: test only change\nBug: 235559605\nChange-Id: I33bac507082fa89d1a5ae02cbe671ce7f5f09b07\n"
    },
    {
      "commit": "44fd16d05742c1ceb5af9ddc88b490a71b5970d4",
      "tree": "b7569a7b7ae7b1753c966a707c2efd37fca71012",
      "parents": [
        "20ed86f896bf24b4240924fe64bb477ba03b6517",
        "05eb2d093cb11e63cafa96a84368f1ce11d33c15"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 21 15:31:33 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 15:31:33 2022 +0000"
      },
      "message": "Merge \"Refuse to adopt shell permissions if they were already adopted.\""
    },
    {
      "commit": "12ac792079d4c9a3fbc2132ef9cdb59a9e67732a",
      "tree": "58f69a4502e22ce03dbbc87e1e247afb0bc7daf4",
      "parents": [
        "72e19c51fa8f5ed2e5b2605a2fc5d7db1f4979ad"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jul 20 15:02:00 2022 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jul 20 15:02:00 2022 +0900"
      },
      "message": "Add CtsNetTestCasesMaxTargetSdk30\n\nThe annotation is used to verify behavior for apps with max target SDK\n30.\n\nBug: 235355681\nTest: atest CtsNetTestCasesMaxTargetSdk30\nChange-Id: Idb358ee1179bc3b6ef9ddbe7b567532822bdc64e\n"
    }
  ],
  "next": "1e6a3a970e2a41608c08a6807b8d8d2edb3bb80c"
}
