@Override public QuadTreeClusteringStrategy build() { return (QuadTreeClusteringStrategy) super.build(); }
@Override public QuadTreeClusteringStrategy build() { return (QuadTreeClusteringStrategy) super.build(); }
final int numEntries = 20 * CanonicalNodeNameOrder.normalizedSizeLimit(0) + 1500; strategy = canonical.build();
final int numEntries = 20 * CanonicalNodeNameOrder.normalizedSizeLimit(0) + 1500; strategy = canonical.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 nodeReplacedOnEditsWithBaseRevTree() { final RevTree origTree = manuallyCreateBucketsTree(); store.put(origTree); final Set<Node> original = new HashSet<>(); final Set<Node> edited = new HashSet<>(); { Iterator<NodeRef> it = new DepthTreeIterator("", ObjectId.NULL, origTree, store, Strategy.RECURSIVE_FEATURES_ONLY); while (it.hasNext()) { original.add(it.next().getNode()); } for (Node n : original) { ObjectId oid = RevObjectTestSupport.hashString(n.toString()); Node edit = Node.create(n.getName(), oid, ObjectId.NULL, TYPE.FEATURE, n.bounds().orNull()); edited.add(edit); } assertFalse(original.equals(edited)); } strategy = canonical.original(origTree).build(); for (Node n : edited) { strategy.put(n); } Set<Node> edittedResult = new HashSet<>(); DAG root = strategy.buildRoot(); edittedResult.addAll(toNode(flatten(root))); assertEquals(edited.size(), edittedResult.size()); assertEquals(edited, edittedResult); }
@Test public void nodeReplacedOnEditsWithBaseRevTree() { final RevTree origTree = manuallyCreateBucketsTree(); store.put(origTree); final Set<Node> original = new HashSet<>(); final Set<Node> edited = new HashSet<>(); { Iterator<NodeRef> it = new DepthTreeIterator("", ObjectId.NULL, origTree, store, Strategy.RECURSIVE_FEATURES_ONLY); while (it.hasNext()) { original.add(it.next().getNode()); } for (Node n : original) { ObjectId oid = RevObjectTestSupport.hashString(n.toString()); Node edit = RevObjectFactory.defaultInstance().createNode(n.getName(), oid, ObjectId.NULL, TYPE.FEATURE, n.bounds().orNull(), null); edited.add(edit); } assertFalse(original.equals(edited)); } strategy = canonical.original(origTree).build(); for (Node n : edited) { strategy.put(n); } Set<Node> edittedResult = new HashSet<>(); DAG root = strategy.buildRoot(); edittedResult.addAll(toNode(flatten(root))); assertEquals(edited.size(), edittedResult.size()); assertEquals(edited, edittedResult); }
strategy = canonical.original(original).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()); }
strategy = canonical.original(original).build();
@Test public void nodeReplacedOnEdits() { strategy = canonical.build();
@Test public void nodeReplacedOnEdits() { strategy = canonical.build();
@Test public void promoteLeafNodes() { final RevTree original = manuallyCreateLeafTree( CanonicalNodeNameOrder.normalizedSizeLimit(0)); store.put(original); strategy = canonical.original(original).build(); final int numNodes = 2 * strategy.normalizedSizeLimit(0); Stopwatch sw = Stopwatch.createStarted(); for (int i = 0; i < numNodes; i++) { Node node = featureNode("f", i, true); strategy.put(node); } System.err.printf("Added %,d nodes in %s\n", numNodes, sw.stop()); DAG root = strategy.buildRoot(); assertTrue(children(root).isEmpty()); assertFalse(buckets(root).isEmpty()); assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(numNodes, flattenedNodes.size()); }
@Test public void buildSplittedDAGFromScratch() { strategy = canonical.build(); final int numNodes = 2 * strategy.normalizedSizeLimit(0); for (int i = 0; i < numNodes; i++) { Node node = featureNode("f", i, true); strategy.put(node); } DAG root = strategy.buildRoot(); assertTrue(children(root).isEmpty()); assertFalse(buckets(root).isEmpty()); assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(numNodes, flattenedNodes.size()); }
@Test public void buildSimpleDAGFromScratch() { strategy = canonical.build(); for (int i = 0; i < strategy.normalizedSizeLimit(0); i++) { Node node = featureNode("f", i); strategy.put(node); } DAG root = strategy.buildRoot(); assertTrue(buckets(root).isEmpty()); assertFalse(children(root).isEmpty()); assertEquals(strategy.normalizedSizeLimit(0), children(root).size()); assertEquals(0, strategy.depth()); }
@Test public void promoteLeafNodes() { final RevTree original = manuallyCreateLeafTree( CanonicalNodeNameOrder.normalizedSizeLimit(0)); store.put(original); strategy = canonical.original(original).build(); final int numNodes = 2 * strategy.normalizedSizeLimit(0); Stopwatch sw = Stopwatch.createStarted(); for (int i = 0; i < numNodes; i++) { Node node = featureNode("f", i, true); strategy.put(node); } System.err.printf("Added %,d nodes in %s\n", numNodes, sw.stop()); DAG root = strategy.buildRoot(); assertTrue(children(root).isEmpty()); assertFalse(buckets(root).isEmpty()); assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(numNodes, flattenedNodes.size()); }
@Test public void buildSplittedDAGFromScratch() { strategy = canonical.build(); final int numNodes = 2 * strategy.normalizedSizeLimit(0); for (int i = 0; i < numNodes; i++) { Node node = featureNode("f", i, true); strategy.put(node); } DAG root = strategy.buildRoot(); assertTrue(children(root).isEmpty()); assertFalse(buckets(root).isEmpty()); assertEquals(1, strategy.depth()); List<NodeId> flattenedNodes = flatten(root); assertEquals(numNodes, flattenedNodes.size()); }
@Test public void buildSimpleDAGFromScratch() { strategy = canonical.build(); for (int i = 0; i < strategy.normalizedSizeLimit(0); i++) { Node node = featureNode("f", i); strategy.put(node); } DAG root = strategy.buildRoot(); assertTrue(buckets(root).isEmpty()); assertFalse(children(root).isEmpty()); assertEquals(strategy.normalizedSizeLimit(0), children(root).size()); assertEquals(0, strategy.depth()); }