summaryrefslogtreecommitdiffstats
path: root/support/src/test/java
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2014-02-28 16:43:15 +0000
committerPaul Duffin <paulduffin@google.com>2014-05-01 16:06:57 +0100
commita6f350c645dbb66d68cc2b03afb8f2eeaa88fbba (patch)
tree3625ee2813edb10bdb706e263408f744a16cccbd /support/src/test/java
parent8ccb6f5b798aa991cccf7bba6ddb21ee8affecac (diff)
downloadlibcore-a6f350c645dbb66d68cc2b03afb8f2eeaa88fbba.zip
libcore-a6f350c645dbb66d68cc2b03afb8f2eeaa88fbba.tar.gz
libcore-a6f350c645dbb66d68cc2b03afb8f2eeaa88fbba.tar.bz2
Improve detection of CloseGuard protected resource leakage
* Add CloseGuardMonitor to intercept and collate CloseGuard reports and if necessary throw an exception listing the resource leaks. * Add ResourceLeakageDetector to abstract away the CloseGuardMonitor which will not work on RI. * Add AbstractResourceLeakageDetectorTestCase as a base class for tests that need to detect resource leaks, in future this could be handled by modifications to Cts and Vogar test runners. * Remove CloseGuardTester and its sole usage in ProcessBuilderTest. * Remove CloseGuardGuard from within URLConnectionTest * Change ZipFileTest, ProcessBuilderTest, URLConnectionTest to use new mechanism, fix issues that are identified and do some cleanup/remove duplicated code. Bug: https://code.google.com/p/android/issues/detail?id=66383 Change-Id: Id026dbb6bc66091a15f07329e6371cd0d1f32cf5
Diffstat (limited to 'support/src/test/java')
-rw-r--r--support/src/test/java/libcore/dalvik/system/CloseGuardTester.java68
1 files changed, 0 insertions, 68 deletions
diff --git a/support/src/test/java/libcore/dalvik/system/CloseGuardTester.java b/support/src/test/java/libcore/dalvik/system/CloseGuardTester.java
deleted file mode 100644
index e82d33d..0000000
--- a/support/src/test/java/libcore/dalvik/system/CloseGuardTester.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2010 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 libcore.dalvik.system;
-
-import dalvik.system.CloseGuard;
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Handler;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-import junit.framework.Assert;
-import libcore.java.lang.ref.FinalizationTester;
-
-public final class CloseGuardTester implements Closeable {
-
- private final List<LogRecord> logRecords = new CopyOnWriteArrayList<LogRecord>();
- private final Logger logger = Logger.getLogger(CloseGuard.class.getName());
-
- private final Handler logWatcher = new Handler() {
- @Override public void close() {}
- @Override public void flush() {}
- @Override public void publish(LogRecord record) {
- logRecords.add(record);
- }
- };
-
- public CloseGuardTester() {
- /*
- * Collect immediately before we start monitoring the CloseGuard logs.
- * This lowers the chance that we'll report an unrelated leak.
- */
- FinalizationTester.induceFinalization();
- logger.addHandler(logWatcher);
- }
-
- public void assertEverythingWasClosed() {
- FinalizationTester.induceFinalization();
-
- if (!logRecords.isEmpty()) {
- // print the log records with the output of this test
- for (LogRecord leak : logRecords) {
- new ConsoleHandler().publish(leak);
- }
- Assert.fail("CloseGuard detected unclosed resources!");
- }
- }
-
- @Override public void close() throws IOException {
- Logger.getLogger(CloseGuard.class.getName()).removeHandler(logWatcher);
- }
-}