Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ebde786 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6118234 from 72ac4e66 to rvc-release

Change-Id: I88ba37e81cbe6e7581db7fa7bfbce2b1c5dba27c
parents 1a0b100b 72ac4e66
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.net.util.InterfaceParams;
import android.net.util.NetworkStackUtils;
import android.net.util.NetworkStackUtils;
import android.net.util.PacketReader;
import android.net.util.PacketReader;
import android.os.Handler;
import android.os.Handler;
import android.os.SystemClock;
import android.system.ErrnoException;
import android.system.ErrnoException;
import android.system.Os;
import android.system.Os;
import android.text.TextUtils;
import android.text.TextUtils;
@@ -35,6 +36,7 @@ import android.util.LocalLog;
import android.util.Log;
import android.util.Log;


import com.android.internal.util.HexDump;
import com.android.internal.util.HexDump;
import com.android.internal.util.TokenBucket;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.IOException;
@@ -63,10 +65,15 @@ public class ConnectivityPacketTracker {
    private static final String MARK_STOP = "--- STOP ---";
    private static final String MARK_STOP = "--- STOP ---";
    private static final String MARK_NAMED_START = "--- START (%s) ---";
    private static final String MARK_NAMED_START = "--- START (%s) ---";
    private static final String MARK_NAMED_STOP = "--- STOP (%s) ---";
    private static final String MARK_NAMED_STOP = "--- STOP (%s) ---";
    // Use a TokenBucket to limit CPU usage of logging packets in steady state.
    private static final int TOKEN_FILL_RATE = 50;   // Maximum one packet every 20ms.
    private static final int MAX_BURST_LENGTH = 100; // Maximum burst 100 packets.


    private final String mTag;
    private final String mTag;
    private final LocalLog mLog;
    private final LocalLog mLog;
    private final PacketReader mPacketListener;
    private final PacketReader mPacketListener;
    private final TokenBucket mTokenBucket = new TokenBucket(TOKEN_FILL_RATE, MAX_BURST_LENGTH);
    private long mLastRateLimitLogTimeMs = 0;
    private boolean mRunning;
    private boolean mRunning;
    private String mDisplayName;
    private String mDisplayName;


@@ -115,6 +122,17 @@ public class ConnectivityPacketTracker {


        @Override
        @Override
        protected void handlePacket(byte[] recvbuf, int length) {
        protected void handlePacket(byte[] recvbuf, int length) {
            if (!mTokenBucket.get()) {
                // Rate limited. Log once every second so the user knows packets are missing.
                final long now = SystemClock.elapsedRealtime();
                if (now >= mLastRateLimitLogTimeMs + 1000) {
                    addLogEntry("Warning: too many packets, rate-limiting to one every " +
                                TOKEN_FILL_RATE + "ms");
                    mLastRateLimitLogTimeMs = now;
                }
                return;
            }

            final String summary = ConnectivityPacketSummary.summarize(
            final String summary = ConnectivityPacketSummary.summarize(
                    mInterface.macAddr, recvbuf, length);
                    mInterface.macAddr, recvbuf, length);
            if (summary == null) return;
            if (summary == null) return;

tests/unit/AndroidTest.xml

deleted100644 → 0
+0 −30
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<configuration description="Runs Tests for NetworkStack">
    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
        <option name="test-file-name" value="NetworkStackTests.apk" />
        <option name="cleanup-apks" value="true" />
    </target_preparer>

    <option name="test-suite-tag" value="apct" />
    <option name="test-suite-tag" value="framework-base-presubmit" />
    <option name="test-tag" value="NetworkStackTests" />
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="com.android.server.networkstack.tests" />
        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
        <option name="hidden-api-checks" value="false"/>
    </test>
</configuration>