Browse Source

fix checking visited nodes

pull/1371/head
Chris Lu 5 years ago
parent
commit
55b6efb755
  1. 14
      weed/util/bounded_tree/bounded_tree.go
  2. 12
      weed/util/bounded_tree/bounded_tree_test.go

14
weed/util/bounded_tree/bounded_tree.go

@ -1,6 +1,8 @@
package bounded_tree package bounded_tree
import ( import (
"fmt"
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/util" "github.com/chrislusf/seaweedfs/weed/util"
) )
@ -133,7 +135,7 @@ func (t *BoundedTree) HasVisited(p util.FullPath) bool {
} }
components := p.Split() components := p.Split()
// fmt.Printf("components %v %d\n", components, len(components))
fmt.Printf("components %v %d\n", components, len(components))
return t.hasVisited(t.root, util.FullPath("/"), components, 0) return t.hasVisited(t.root, util.FullPath("/"), components, 0)
} }
@ -147,15 +149,15 @@ func (t *BoundedTree) hasVisited(n *Node, currentPath util.FullPath, components
return false return false
} }
// fmt.Printf(" hasVisited child %v %v\n", currentPath, components[i])
fmt.Printf(" hasVisited child %v %+v %d\n", currentPath, components, i)
toVisitNode, found := n.Children[components[i]]
if !found {
if i >= len(components) {
return true return true
} }
if i+1 >= len(components) {
return false
toVisitNode, found := n.Children[components[i]]
if !found {
return true
} }
return t.hasVisited(toVisitNode, currentPath.Child(components[i]), components, i+1) return t.hasVisited(toVisitNode, currentPath.Child(components[i]), components, i+1)

12
weed/util/bounded_tree/bounded_tree_test.go

@ -4,6 +4,8 @@ import (
"fmt" "fmt"
"testing" "testing"
"github.com/stretchr/testify/assert"
"github.com/chrislusf/seaweedfs/weed/util" "github.com/chrislusf/seaweedfs/weed/util"
) )
@ -59,6 +61,8 @@ func TestBoundedTree(t *testing.T) {
tree.EnsureVisited(util.FullPath("/a/b/c"), visitFn) tree.EnsureVisited(util.FullPath("/a/b/c"), visitFn)
assert.Equal(t, true, tree.HasVisited(util.FullPath("/a/b")))
printMap(tree.root.Children) printMap(tree.root.Children)
a := tree.root.getChild("a") a := tree.root.getChild("a")
@ -110,9 +114,9 @@ func TestEmptyBoundedTree(t *testing.T) {
printMap(tree.root.Children) printMap(tree.root.Children)
println(tree.HasVisited(util.FullPath("/a/b")))
println(tree.HasVisited(util.FullPath("/a")))
println(tree.HasVisited(util.FullPath("/g")))
println(tree.HasVisited(util.FullPath("/g/x")))
assert.Equal(t, true, tree.HasVisited(util.FullPath("/a/b")))
assert.Equal(t, true, tree.HasVisited(util.FullPath("/a")))
assert.Equal(t, false, tree.HasVisited(util.FullPath("/g")))
assert.Equal(t, false, tree.HasVisited(util.FullPath("/g/x")))
} }
Loading…
Cancel
Save