@Override public @Nullable RevTree build(BooleanSupplier abortFlag) { return build(); } }
/** * @return a new instance of a properly "named" empty tree (as in with a proper object id after * applying {@link HashObject}) */ public static RevTree empty() { RevTree theEmptyTree = new LegacyTreeBuilder().build(); return theEmptyTree; }
@Override public @Nullable RevTree build(BooleanSupplier abortFlag) { return build(); } }
/** * @return a new instance of a properly "named" empty tree (as in with a proper object id after * applying {@link HashObject}) */ public static RevTree empty() { RevTree theEmptyTree = new LegacyTreeBuilder().build(); return theEmptyTree; }
final RevTree modifiedBucketTree = bucketTreeBuilder.build(); final long bucketSizeDelta = modifiedBucketTree.size() - currentBucketTree.size(); final int bucketTreesDelta = modifiedBucketTree.numTrees()
legacyBuilder.put(n); original = legacyBuilder.build();
@Test public void bucketDAGShrinksOnRemoveBellowThreshold() { final List<Node> nodes = featureNodes(0, 513, false); final List<Node> removeNodes = nodes.subList(100, 500); final RevTree original; { LegacyTreeBuilder legacyBuilder = new LegacyTreeBuilder(store); for (Node n : nodes) { legacyBuilder.put(n); } original = legacyBuilder.build(); } // original = manuallyCreateBucketsTree(); store.put(original); strategy = canonical.original(original).build(); Stopwatch sw = Stopwatch.createStarted(); for (Node node : removeNodes) { strategy.remove(node); } System.err.printf("Removed %,d nodes in %s\n", removeNodes.size(), sw.stop()); DAG root = strategy.buildRoot(); assertFalse(children(root).isEmpty()); assertTrue(buckets(root).isEmpty()); // assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(nodes.size() - removeNodes.size(), flattenedNodes.size()); assertTrue(buckets(root).isEmpty()); assertFalse(children(root).isEmpty()); assertEquals(nodes.size() - removeNodes.size(), children(root).size()); }
@Test public void bucketDAGShrinksOnRemoveBellowThreshold() { final List<Node> nodes = featureNodes(0, 513, false); final List<Node> removeNodes = nodes.subList(100, 500); final RevTree original; { LegacyTreeBuilder legacyBuilder = new LegacyTreeBuilder(store); for (Node n : nodes) { legacyBuilder.put(n); } original = legacyBuilder.build(); } // original = manuallyCreateBucketsTree(); store.put(original); strategy = canonical.original(original).build(); Stopwatch sw = Stopwatch.createStarted(); for (Node node : removeNodes) { strategy.remove(node); } System.err.printf("Removed %,d nodes in %s\n", removeNodes.size(), sw.stop()); DAG root = strategy.buildRoot(); assertFalse(children(root).isEmpty()); assertTrue(buckets(root).isEmpty()); // assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(nodes.size() - removeNodes.size(), flattenedNodes.size()); assertTrue(buckets(root).isEmpty()); assertFalse(children(root).isEmpty()); assertEquals(nodes.size() - removeNodes.size(), children(root).size()); }
legacyBuilder.put(n); original = legacyBuilder.build();
final RevTree legacyResult = legacy.build(); final RevTree result = builder.build();
final RevTree modifiedBucketTree = bucketTreeBuilder.build(); final long bucketSizeDelta = modifiedBucketTree.size() - currentBucketTree.size(); final int bucketTreesDelta = modifiedBucketTree.numTrees()
final RevTree legacyResult = legacy.build(); final RevTree result = builder.build(); assertEquals(legacyResult, result);
final RevTree legacyResult = legacy.build(); final RevTree result = builder.build(); assertEquals(legacyResult, result);
final RevTree legacyResult = legacy.build(); final RevTree result = builder.build();
@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); }