/*
* Copyright (c) 2016, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.test.jdbc4.jdbc41;
import org.postgresql.Driver;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import se.jiderhamn.classloader.PackagesLoadedOutsideClassLoader;
import se.jiderhamn.classloader.leak.JUnitClassloaderRunner;
import se.jiderhamn.classloader.leak.Leaks;
/**
* Test case that verifies that the use of {@link org.postgresql.util.SharedTimer} within
* {@link org.postgresql.Driver} does not cause ClassLoader leaks
*
* The class is placed in {@code jdbc41} package so it won't be tested in JRE6 build.
* {@link JUnitClassloaderRunner} does not support JRE6, so we have to skip the test there.
*
* @author Mattias Jiderhamn
*/
@RunWith(JUnitClassloaderRunner.class)
@PackagesLoadedOutsideClassLoader(packages = "org.postgresql", addToDefaults = true)
public class SharedTimerClassLoaderLeakTest {
/** Starting a {@link org.postgresql.util.SharedTimer} should not cause ClassLoader leaks */
@Leaks(false)
@Test
public void sharedTimerDoesNotCauseLeak() {
Driver.getSharedTimer().getTimer(); // Start timer
}
@After
public void tearDown() {
Driver.getSharedTimer().releaseTimer();
}
}