@Override public boolean remove(final Node node) { Preconditions.checkNotNull(node, "key can't be null"); return remove(node.getName()); }
@Override public boolean remove(final Node node) { Preconditions.checkNotNull(node, "key can't be null"); return remove(node.getName()); }
for (Node node : bucketEntries) { if (node.getObjectId().isNull()) { bucketTreeBuilder.remove(node.getName()); } else { bucketTreeBuilder.put(node);
for (Node node : bucketEntries) { if (node.getObjectId().isNull()) { bucketTreeBuilder.remove(node.getName()); } else { bucketTreeBuilder.put(node);
for (Node key : removedKeys) { builder.remove(key); legacy.remove(key);
for (String key : removedKeys) { builder.remove(key); legacy.remove(key);
for (String key : removedKeys) { builder.remove(key); legacy.remove(key);
for (Node key : removedKeys) { builder.remove(key); legacy.remove(key);
@Test public void testShrinksOnRemoveBellowThreshold() throws Exception { final int numEntries = (int) (1.5 * CanonicalNodeNameOrder.normalizedSizeLimit(0)); final ObjectId treeId = createAndSaveTree(numEntries, true); final RevTree tree = objectStore.getTree(treeId); assertEquals(numEntries, tree.size()); // remove all but enough to have an unsplitted tree final long resultSize = 100; final Set<Node> removedKeys = new HashSet<>(); { DepthTreeIterator it = new DepthTreeIterator("", ObjectId.NULL, tree, objectStore, Strategy.CHILDREN); for (int i = 0; i < numEntries - resultSize; i++) { NodeRef entry = it.next(); removedKeys.add(entry.getNode()); } } final LegacyTreeBuilder legacy = createLegacyBuilder(tree); final CanonicalTreeBuilder builder = createBuiler(tree); for (Node key : removedKeys) { builder.remove(key); legacy.remove(key); } final RevTree legacyResult = legacy.build(); final RevTree result = builder.build(); assertEquals(resultSize, result.size()); assertEquals(0, result.bucketsSize()); assertEquals(legacyResult, result); }
@Test public void testShrinksOnRemoveBellowThreshold() throws Exception { final int numEntries = (int) (1.5 * CanonicalNodeNameOrder.normalizedSizeLimit(0)); final ObjectId treeId = createAndSaveTree(numEntries, true); final RevTree tree = objectStore.getTree(treeId); assertEquals(numEntries, tree.size()); // remove all but enough to have an unsplitted tree final long resultSize = 100; final Set<String> removedKeys = new HashSet<String>(); { DepthTreeIterator it = new DepthTreeIterator("", ObjectId.NULL, tree, objectStore, Strategy.CHILDREN); for (int i = 0; i < numEntries - resultSize; i++) { NodeRef entry = it.next(); removedKeys.add(entry.path()); } } final LegacyTreeBuilder legacy = createLegacyBuilder(tree); final CanonicalTreeBuilder builder = createBuiler(tree); for (String key : removedKeys) { builder.remove(key); legacy.remove(key); } final RevTree legacyResult = legacy.build(); final RevTree result = builder.build(); assertEquals(resultSize, result.size()); assertTrue(result.buckets().isEmpty()); assertEquals(legacyResult, result); }