diff options
author | Paul Duffin <paulduffin@google.com> | 2014-02-28 16:43:15 +0000 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2014-05-01 16:06:57 +0100 |
commit | a6f350c645dbb66d68cc2b03afb8f2eeaa88fbba (patch) | |
tree | 3625ee2813edb10bdb706e263408f744a16cccbd /support/src/test/java | |
parent | 8ccb6f5b798aa991cccf7bba6ddb21ee8affecac (diff) | |
download | libcore-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.java | 68 |
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); - } -} |