blob: ee4fa8bcc76f21e648c6c75d7ed3741904170b03 [file] [log] [blame]
/*
* Copyright (C) 2024, Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.lib;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.internal.storage.file.GC;
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.junit.Before;
import org.junit.Test;
public class BitmapIndexTest extends LocalDiskRepositoryTestCase {
private static final String MAIN = "refs/heads/main";
TestRepository<FileRepository> repo;
RevCommit tipWithBitmap;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
FileRepository db = createWorkRepository();
repo = new TestRepository<>(db);
RevCommit base = repo.commit().create();
RevCommit one = repo.commit().parent(base).create();
tipWithBitmap = repo.commit().parent(one).create();
repo.update(MAIN, tipWithBitmap);
GC gc = new GC(repo.getRepository());
gc.setAuto(false);
gc.gc().get();
assertNotNull(repo.getRevWalk().getObjectReader().getBitmapIndex());
}
@Test
public void listener_getBitmap_counted() throws Exception {
try (RevWalk rw = repo.getRevWalk();
ObjectReader or = rw.getObjectReader()) {
BitmapLookupCounter counter = new BitmapLookupCounter();
BitmapIndex bitmapIndex = or.getBitmapIndex();
bitmapIndex.addBitmapLookupListener(counter);
bitmapIndex.getBitmap(tipWithBitmap);
bitmapIndex.getBitmap(tipWithBitmap);
bitmapIndex.getBitmap(ObjectId.zeroId());
assertEquals(2, counter.bitmapFound);
assertEquals(1, counter.bitmapNotFound);
}
}
private static class BitmapLookupCounter
implements BitmapIndex.BitmapLookupListener {
int bitmapFound = 0;
int bitmapNotFound = 0;
@Override
public void onBitmapFound(AnyObjectId oid) {
bitmapFound += 1;
}
@Override
public void onBitmapNotFound(AnyObjectId oid) {
bitmapNotFound += 1;
}
}
}