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

Commit 71a0d06f authored by David Hu's avatar David Hu
Browse files

Allow tests to run when bandwidth profiling fails

When bandwidth profiling fails due to lack of kernel module
the test should still be able to run.

Change-Id: Ib111989d2892b05c147889e562e77035fab05140
parent dfed49a2
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.test;
import android.net.NetworkStats;
import android.net.TrafficStats;
import android.os.Bundle;
import android.util.Log;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -29,6 +30,7 @@ import java.lang.reflect.Modifier;
 * as an {@link InstrumentationTestCase}
 */
public class BandwidthTestCase extends InstrumentationTestCase {
    private static final String TAG = "BandwidthTestCase";
    private static final String REPORT_KEY_PACKETS_SENT = "txPackets";
    private static final String REPORT_KEY_PACKETS_RECEIVED = "rxPackets";
    private static final String REPORT_KEY_BYTES_SENT = "txBytes";
@@ -86,11 +88,26 @@ public class BandwidthTestCase extends InstrumentationTestCase {
            }
        } else if (method.isAnnotationPresent(BandwidthTest.class) ||
                testClass.isAnnotationPresent(BandwidthTest.class)) {
            /**
             * If bandwidth profiling fails for whatever reason the test
             * should be allow to execute to its completion.
             * Typically bandwidth profiling would fail when a lower level
             * component is missing, such as the kernel module, for a newly
             * introduced hardware.
             */
            try{
                TrafficStats.startDataProfiling(null);
            } catch(IllegalStateException isx){
                Log.w(TAG, "Failed to start bandwidth profiling");
            }
            runMethod(method, 1, false);
            try{
                NetworkStats stats = TrafficStats.stopDataProfiling(null);
                NetworkStats.Entry entry = stats.getTotal(null);
                getInstrumentation().sendStatus(2, getBandwidthStats(entry));
            } catch (IllegalStateException isx){
                Log.w(TAG, "Failed to collect bandwidth stats");
            }
        } else {
            runMethod(method, runCount, isRepetitive);
        }