summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Remi NGUYEN VAN <reminv@google.com> 2018-04-26 17:52:03 +0900
committer Remi NGUYEN VAN <reminv@google.com> 2018-08-14 18:14:09 +0900
commita8e9090cf65b982a9c6d12154e861375922163b6 (patch)
treecb4f9928e041e95f7c9f041bf903dea71cf1c3c5
parentbf668472406a4b7f030eb20f35e4e4386b56671f (diff)
Fix testRegisterUsageCallback failure in setUp
LocalServices.addService in NetworkStatsService is currently failing with IllegalStateException "Overriding service registration". Setting up LocalServices in the test to avoid this issue might be possible, but moving the registration to the only non-test caller of that constructor as done here solves the issue and avoids side-effects from a constructor. Test: atest FrameworksNetTests does not choke on this test Bug: b/78487385 Bug: b/80082746 Change-Id: I5dba98fc79aec0800c8b71e6c7e23d1cfbcae852 Merged-In: I884a7a8bd7db3fcd220b785ba9914ac8c77720f0 (Clean cherry-pick of go/ag/4061255)
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java5
-rw-r--r--tests/net/java/com/android/server/net/NetworkStatsServiceTest.java3
2 files changed, 5 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index aba75ddb4555..60e9eaab5721 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -324,6 +324,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
wakeLock, getDefaultClock(), TelephonyManager.getDefault(),
new DefaultNetworkStatsSettings(context), new NetworkStatsObservers(),
getDefaultSystemDir(), getDefaultBaseDir());
+ service.registerLocalService();
HandlerThread handlerThread = new HandlerThread(TAG);
Handler.Callback callback = new HandlerCallback(service);
@@ -333,6 +334,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
return service;
}
+ // This must not be called outside of tests, even within the same package, as this constructor
+ // does not register the local service. Use the create() helper above.
@VisibleForTesting
NetworkStatsService(Context context, INetworkManagementService networkManager,
AlarmManager alarmManager, PowerManager.WakeLock wakeLock, Clock clock,
@@ -349,7 +352,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
mSystemDir = checkNotNull(systemDir, "missing systemDir");
mBaseDir = checkNotNull(baseDir, "missing baseDir");
mUseBpfTrafficStats = new File("/sys/fs/bpf/traffic_uid_stats_map").exists();
+ }
+ private void registerLocalService() {
LocalServices.addService(NetworkStatsManagerInternal.class,
new NetworkStatsManagerInternalImpl());
}
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index 280e4c234e03..f89f303a1345 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -227,9 +227,6 @@ public class NetworkStatsServiceTest {
@After
public void tearDown() throws Exception {
- // Registered by NetworkStatsService's constructor.
- LocalServices.removeServiceForTest(NetworkStatsManagerInternal.class);
-
IoUtils.deleteContents(mStatsDir);
mServiceContext = null;