aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse
diff options
context:
space:
mode:
authorJacek Centkowski <geminica.programs@gmail.com>2024-11-11 12:48:20 +0100
committerJacek Centkowski <geminica.programs@gmail.com>2024-11-12 07:59:57 +0100
commitfbbd0c3e3e5a940deb18332b116ba869381c6f62 (patch)
tree2b20cd9ebc7aefd567b774e73fcfc9e30b473f05 /org.eclipse.jgit.test/tst/org/eclipse
parent0dfc30951b5753b3966051c70e5b1c3860fd9fc5 (diff)
downloadjgit-fbbd0c3e3e5a940deb18332b116ba869381c6f62.tar.gz
jgit-fbbd0c3e3e5a940deb18332b116ba869381c6f62.zip
Don't fail when trying to prune pack which is already gone
Update the TestRepository.prunePacked so that it doesn't fail if a pack to be pruned is already gone. It is especially handy when prunePacked function is called in `TestRepository.packAndPrune` function after repo moves on after the GC was performed. Change-Id: I01b4ddbaddec1fdc24cfbb967e0edfe0de6c4b7c
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcNumberOfPackFilesSinceBitmapStatisticsTest.java81
1 files changed, 3 insertions, 78 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcNumberOfPackFilesSinceBitmapStatisticsTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcNumberOfPackFilesSinceBitmapStatisticsTest.java
index 42b99ae512..cd1264ef55 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcNumberOfPackFilesSinceBitmapStatisticsTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcNumberOfPackFilesSinceBitmapStatisticsTest.java
@@ -12,25 +12,13 @@ package org.eclipse.jgit.internal.storage.file;
import static org.junit.Assert.assertEquals;
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
import java.nio.file.Files;
-import java.util.HashSet;
-import java.util.Set;
import java.util.stream.StreamSupport;
-import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
-import org.eclipse.jgit.internal.storage.pack.PackExt;
-import org.eclipse.jgit.internal.storage.pack.PackWriter;
import org.eclipse.jgit.junit.TestRepository;
-import org.eclipse.jgit.lib.NullProgressMonitor;
-import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
-import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.util.FileUtils;
import org.junit.Test;
public class GcNumberOfPackFilesSinceBitmapStatisticsTest extends GcTestCase {
@@ -43,7 +31,7 @@ public class GcNumberOfPackFilesSinceBitmapStatisticsTest extends GcTestCase {
@Test
public void testShouldReportAllPackFilesWhenNoGcWasPerformed()
throws Exception {
- packAndPrune();
+ tr.packAndPrune();
long result = gc.getStatistics().numberOfPackFilesSinceBitmap;
assertEquals(repo.getObjectDatabase().getPacks().size(), result);
@@ -68,7 +56,7 @@ public class GcNumberOfPackFilesSinceBitmapStatisticsTest extends GcTestCase {
// progress & pack
addCommit(parent);
- packAndPrune();
+ tr.packAndPrune();
assertEquals(1L, gc.getStatistics().numberOfPackFilesSinceBitmap);
}
@@ -88,18 +76,11 @@ public class GcNumberOfPackFilesSinceBitmapStatisticsTest extends GcTestCase {
// progress & pack
addCommit(parent);
- packAndPrune();
+ tr.packAndPrune();
assertEquals(1L, gc.getStatistics().numberOfPackFilesSinceBitmap);
}
- private void packAndPrune() throws Exception {
- try (SkipNonExistingFilesTestRepository testRepo = new SkipNonExistingFilesTestRepository(
- repo)) {
- testRepo.packAndPrune();
- }
- }
-
private RevCommit addCommit(RevCommit parent) throws Exception {
PersonIdent ident = new PersonIdent("repo-metrics", "repo@metrics.com");
TestRepository<FileRepository>.CommitBuilder builder = tr.commit()
@@ -121,60 +102,4 @@ public class GcNumberOfPackFilesSinceBitmapStatisticsTest extends GcTestCase {
.spliterator(), false)
.count();
}
-
- /**
- * The TestRepository has a {@link TestRepository#packAndPrune()} function
- * but it fails in the last step after GC was performed as it doesn't
- * SKIP_MISSING files. In order to circumvent it was copied and improved
- * here.
- */
- private static class SkipNonExistingFilesTestRepository
- extends TestRepository<FileRepository> {
- private final FileRepository repo;
-
- private SkipNonExistingFilesTestRepository(FileRepository db) throws IOException {
- super(db);
- repo = db;
- }
-
- @Override
- public void packAndPrune() throws Exception {
- ObjectDirectory odb = repo.getObjectDatabase();
- NullProgressMonitor m = NullProgressMonitor.INSTANCE;
-
- final PackFile pack, idx;
- try (PackWriter pw = new PackWriter(repo)) {
- Set<ObjectId> all = new HashSet<>();
- for (Ref r : repo.getRefDatabase().getRefs())
- all.add(r.getObjectId());
- pw.preparePack(m, all, PackWriter.NONE);
-
- pack = new PackFile(odb.getPackDirectory(), pw.computeName(),
- PackExt.PACK);
- try (OutputStream out = new BufferedOutputStream(
- new FileOutputStream(pack))) {
- pw.writePack(m, m, out);
- }
- pack.setReadOnly();
-
- idx = pack.create(PackExt.INDEX);
- try (OutputStream out = new BufferedOutputStream(
- new FileOutputStream(idx))) {
- pw.writeIndex(out);
- }
- idx.setReadOnly();
- }
-
- odb.openPack(pack);
- updateServerInfo();
-
- // alternative packAndPrune implementation that skips missing files
- // after GC.
- for (Pack p : odb.getPacks()) {
- for (MutableEntry e : p)
- FileUtils.delete(odb.fileFor(e.toObjectId()),
- FileUtils.SKIP_MISSING);
- }
- }
- }
}