From 1f4e465b5af26a105c59930af337b6a99d1a9e70 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Sun, 5 Apr 2020 01:51:10 -0700 Subject: [PATCH] Dump debug logs after a test failure before running tearDown()s. Bug: 145420790 Test: atest hostsidetests/net/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java Change-Id: I19516046f05bd4564c57542ae82a82a1cc362f48 --- ...ractRestrictBackgroundNetworkTestCase.java | 8 +--- .../net/hostside/NetworkPolicyTestRunner.java | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestRunner.java diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java index 69dd2adb48..21212af824 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java @@ -62,13 +62,10 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.runner.AndroidJUnit4; - /** * Superclass for tests related to background network restrictions. */ -@RunWith(AndroidJUnit4.class) +@RunWith(NetworkPolicyTestRunner.class) public abstract class AbstractRestrictBackgroundNetworkTestCase { public static final String TAG = "RestrictBackgroundNetworkTests"; @@ -137,8 +134,7 @@ public abstract class AbstractRestrictBackgroundNetworkTestCase { private boolean mIsLocationOn; @Rule - public final RuleChain mRuleChain = RuleChain.outerRule(new DumpOnFailureRule()) - .around(new RequiredPropertiesRule()) + public final RuleChain mRuleChain = RuleChain.outerRule(new RequiredPropertiesRule()) .around(new MeterednessConfigurationRule()); protected void setUp() throws Exception { diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestRunner.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestRunner.java new file mode 100644 index 0000000000..f340907ae5 --- /dev/null +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestRunner.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2020 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. + */ + +package com.android.cts.net.hostside; + +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; + +import org.junit.rules.RunRules; +import org.junit.rules.TestRule; +import org.junit.runners.model.FrameworkMethod; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.Statement; + +import java.util.List; + +/** + * Custom runner to allow dumping logs after a test failure before the @After methods get to run. + */ +public class NetworkPolicyTestRunner extends AndroidJUnit4ClassRunner { + private TestRule mDumpOnFailureRule = new DumpOnFailureRule(); + + public NetworkPolicyTestRunner(Class klass) throws InitializationError { + super(klass); + } + + @Override + public Statement methodInvoker(FrameworkMethod method, Object test) { + return new RunRules(super.methodInvoker(method, test), List.of(mDumpOnFailureRule), + describeChild(method)); + } +}