package hudson.scm; import hudson.FilePath; import hudson.model.BuildListener; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import hudson.model.Hudson; import hudson.model.Result; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.io.PrintWriter; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import junit.framework.TestCase; public class SubversionSCMLeakTest extends TestCase { public void testLeak() throws Exception { Hudson hudson = new Hudson(new File("/tmp/hudsontest"), null); FreeStyleProject project = new FreeStyleProject(hudson, "test"); FreeStyleBuild build = new FreeStyleBuild(project); SubversionSCM scm = new SubversionSCM(new String[] { "file:///data/SVN/admin/lib" }, new String[] { "/tmp/svntest" }, false, "recht", null); BuildListener listener = new BuildListener() { public void finished(Result result) { } public void started() { } public PrintWriter error(String msg) { return null; } public PrintWriter fatalError(String msg) { return null; } public PrintStream getLogger() { try { return new PrintStream(new File("/dev/null")); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } }; MemoryMXBean mmx = ManagementFactory.getMemoryMXBean(); System.out.println(mmx.getHeapMemoryUsage()); for (int i = 0; i < 1000; i++) { scm.checkout(build, null, new FilePath(new File("/tmp/hudsontest")), listener, new File("/tmp/changelog")); System.out.println(mmx.getHeapMemoryUsage()); } System.out.println(mmx.getHeapMemoryUsage()); } }