You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GcOrphanFilesTest.java 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Copyright (C) 2017 Ericsson and others
  3. *
  4. * This program and the accompanying materials are made available under the
  5. * terms of the Eclipse Distribution License v. 1.0 which is available at
  6. * https://www.eclipse.org/org/documents/edl-v10.php.
  7. *
  8. * SPDX-License-Identifier: BSD-3-Clause
  9. */
  10. package org.eclipse.jgit.internal.storage.file;
  11. import static org.junit.Assert.assertFalse;
  12. import static org.junit.Assert.assertTrue;
  13. import java.io.File;
  14. import java.io.IOException;
  15. import org.junit.Before;
  16. import org.junit.Test;
  17. public class GcOrphanFilesTest extends GcTestCase {
  18. private final static String PACK = "pack";
  19. private final static String BITMAP_File_1 = PACK + "-1.bitmap";
  20. private final static String IDX_File_2 = PACK + "-2.idx";
  21. private final static String IDX_File_malformed = PACK + "-1234idx";
  22. private final static String PACK_File_2 = PACK + "-2.pack";
  23. private final static String PACK_File_3 = PACK + "-3.pack";
  24. private File packDir;
  25. @Override
  26. @Before
  27. public void setUp() throws Exception {
  28. super.setUp();
  29. packDir = repo.getObjectDatabase().getPackDirectory();
  30. }
  31. @Test
  32. public void bitmapAndIdxDeletedButPackNot() throws Exception {
  33. createFileInPackFolder(BITMAP_File_1);
  34. createFileInPackFolder(IDX_File_2);
  35. createFileInPackFolder(PACK_File_3);
  36. gc.gc();
  37. assertFalse(new File(packDir, BITMAP_File_1).exists());
  38. assertFalse(new File(packDir, IDX_File_2).exists());
  39. assertTrue(new File(packDir, PACK_File_3).exists());
  40. }
  41. @Test
  42. public void bitmapDeletedButIdxAndPackNot() throws Exception {
  43. createFileInPackFolder(BITMAP_File_1);
  44. createFileInPackFolder(IDX_File_2);
  45. createFileInPackFolder(PACK_File_2);
  46. createFileInPackFolder(PACK_File_3);
  47. gc.gc();
  48. assertFalse(new File(packDir, BITMAP_File_1).exists());
  49. assertTrue(new File(packDir, IDX_File_2).exists());
  50. assertTrue(new File(packDir, PACK_File_2).exists());
  51. assertTrue(new File(packDir, PACK_File_3).exists());
  52. }
  53. @Test
  54. public void malformedIdxNotDeleted() throws Exception {
  55. createFileInPackFolder(IDX_File_malformed);
  56. gc.gc();
  57. assertTrue(new File(packDir, IDX_File_malformed).exists());
  58. }
  59. private void createFileInPackFolder(String fileName) throws IOException {
  60. if (!packDir.exists() || !packDir.isDirectory()) {
  61. assertTrue(packDir.mkdirs());
  62. }
  63. assertTrue(new File(packDir, fileName).createNewFile());
  64. }
  65. @Test
  66. public void noSuchPackFolder() throws Exception {
  67. assertTrue(packDir.delete());
  68. gc.gc();
  69. }
  70. }