A system property named jgit.junit.usemmmap can be set to true to enable memory mapping during unit testing. The protected method configure can be overridden to do things like configuring the JGit engine. Signed-off-by: Robin Rosenberg <robin.rosenberg@xxxxxxxxxx> --- .../org/spearce/jgit/lib/RepositoryTestCase.java | 30 ++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryTestCase.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryTestCase.java index e164faf..3b08fa5 100644 --- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryTestCase.java +++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryTestCase.java @@ -49,6 +49,19 @@ import junit.framework.TestCase; import org.spearce.jgit.util.JGitTestUtil; +/** + * Base class for most JGit unit tests. + * + * Sets up a predefined test repository and has support for creating additional + * repositories and destroying them when the tests are finished. + * + * A system property <em>jgit.junit.usemmmap</em> defines whether memory mapping + * is used. Memory mapping has an effect on the file system, in that memory + * mapped files in java cannot be deleted as long as they mapped arrays have not + * been reclaimed by the garbage collector. The programmer cannot control this + * with precision, though hinting using <em>{@link java.lang.System#gc}</em> + * often helps. + */ public abstract class RepositoryTestCase extends TestCase { protected final File trashParent = new File("trash"); @@ -66,6 +79,22 @@ jcommitter = new PersonIdent("J. Committer", "jcommitter@xxxxxxxxxxx"); } + protected boolean packedGitMMAP; + + /** + * Configure JGit before setting up test repositories. + */ + protected void configure() { + packedGitMMAP = "true".equals(System.getProperty("jgit.junit.usemmmap")); + WindowCache.reconfigure(128*1024, 8192, packedGitMMAP, 8192); + } + + /** + * Utility method to delete a directory recursively. It is + * also used internally. + * + * @param dir + */ protected static void recursiveDelete(final File dir) { final File[] ls = dir.listFiles(); if (ls != null) { @@ -123,6 +152,7 @@ protected static void checkFile(File f, final String checkData) public void setUp() throws Exception { super.setUp(); + configure(); recursiveDelete(trashParent); trash = new File(trashParent,"trash"+System.currentTimeMillis()); trash_git = new File(trash, ".git"); -- 1.6.0.3.640.g6331a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html