internal/naming/namespace: deflake some tests, cleanup some comments.

Change-Id: Idf0d393208cf426cbc0ff5f2ba6af225b3f26737
diff --git a/profiles/internal/naming/namespace/all_test.go b/profiles/internal/naming/namespace/all_test.go
index 59749d3..ba2f252 100644
--- a/profiles/internal/naming/namespace/all_test.go
+++ b/profiles/internal/naming/namespace/all_test.go
@@ -61,7 +61,7 @@
 
 // N squared but who cares, this is a little test.
 // Ignores dups.
-func contains(container, contained []string) bool {
+func contains(container, contained []string) (string, bool) {
 L:
 	for _, d := range contained {
 		for _, r := range container {
@@ -69,21 +69,31 @@
 				continue L
 			}
 		}
-		return false
+		return d, false
 	}
-	return true
+	return "", true
 }
 
 func compare(t *testing.T, caller, name string, got, want []string) {
 	// Compare ignoring dups.
-	if !contains(got, want) || !contains(want, got) {
-		boom(t, "%s: %q: got %v, want %v", caller, name, got, want)
+	a, foundA := contains(got, want)
+	b, foundB := contains(want, got)
+	if !foundA {
+		vlog.Infof("%s: %q: failed to find %q: got %v, want %v", caller, name, a, got, want)
+		boom(t, "%s: %q: failed to find %q: got %v, want %v", caller, name, a, got, want)
+	}
+	if !foundB {
+		vlog.Infof("%s: %q: failed to find %q: got %v, want %v", caller, name, a, got, want)
+		boom(t, "%s: %q: failed to find %q: got %v, want %v", caller, name, b, got, want)
 	}
 }
 
 func doGlob(t *testing.T, ctx *context.T, ns namespace.T, pattern string, limit int) []string {
 	var replies []string
-	rc, err := ns.Glob(ctx, pattern)
+
+	sctx, done := context.WithTimeout(ctx, 2*time.Minute)
+	defer done()
+	rc, err := ns.Glob(sctx, pattern)
 	if err != nil {
 		boom(t, "Glob(%s): %s", pattern, err)
 	}
@@ -94,6 +104,8 @@
 			if limit > 0 && len(replies) > limit {
 				boom(t, "Glob returns too many results, perhaps not limiting recursion")
 			}
+		case *naming.GlobReplyError:
+			boom(t, "Glob failed at %q: %v", v.Value.Name, v.Value.Error)
 		}
 	}
 	return replies
@@ -141,11 +153,23 @@
 }
 
 func doResolveTest(t *testing.T, fname string, f func(*context.T, string, ...naming.NamespaceOpt) (*naming.MountEntry, error), ctx *context.T, name string, want []string, opts ...naming.NamespaceOpt) {
-	me, err := f(ctx, name, opts...)
-	if err != nil {
-		boom(t, "Failed to %s %s: %s", fname, name, err)
+	maxretries := 5
+	var lastErr error
+	for i := 0; i < maxretries; i++ {
+		me, err := f(ctx, name, opts...)
+		if err == nil {
+			if i > 0 {
+				t.Logf("doResolveTest: retried %d times", i)
+			}
+			compare(t, fname, name, me.Names(), want)
+			return
+		}
+		if err != nil && verror.Action(err).RetryAction() != 0 {
+			boom(t, "Failed to %s %s: %s, attempt %d", fname, name, err, i)
+		}
+		lastErr = err
 	}
-	compare(t, fname, name, me.Names(), want)
+	boom(t, "Failed to %s %s: %s after %d attempts", fname, name, lastErr, maxretries)
 }
 
 func testResolveToMountTable(t *testing.T, ctx *context.T, ns namespace.T, name string, want ...string) {
@@ -197,6 +221,7 @@
 	if err := s.ServeDispatcher(mountPoint, disp); err != nil {
 		boom(t, "Failed to serve mount table at %s: %s", mountPoint, err)
 	}
+	t.Logf("server %q -> %s", eps[0].Name(), mountPoint)
 	return &serverEntry{mountPoint: mountPoint, server: s, endpoint: eps[0], name: eps[0].Name()}
 }
 
@@ -267,7 +292,9 @@
 	// We directly mount baz into the mt4/foo mount table.
 	globalMP := naming.JoinAddressName(mts["mt4/foo"].name, "baz")
 	mts["baz"] = runMT(t, ctx, "baz")
-	if err := ns.Mount(ctx, globalMP, mts["baz"].name, ttl); err != nil {
+	sctx, done := context.WithTimeout(ctx, 2*time.Minute)
+	defer done()
+	if err := ns.Mount(sctx, globalMP, mts["baz"].name, ttl); err != nil {
 		boom(t, "Failed to Mount %s: %s", globalMP, err)
 	}
 }
@@ -645,6 +672,9 @@
 
 	// Intermediate mounttables should be authenticated.
 	mt := runMT(t, mtCtx, "mt")
+	defer func() {
+		mt.server.Stop()
+	}()
 	// Mount a server on "mt".
 	if err := mount("mt/server", serverEndpoint, time.Minute, naming.ReplaceMount(true)); err != nil {
 		t.Error(err)
@@ -736,6 +766,8 @@
 	_, ctx, cleanup := createContexts(t)
 	defer cleanup()
 	root := runMT(t, ctx, "")
+	defer func() { root.server.Stop() }()
+
 	ns := v23.GetNamespace(ctx)
 	ns.SetRoots(root.name)
 
@@ -750,6 +782,7 @@
 	if err := server.Serve("leaf", &leafObject{}, nil); err != nil {
 		boom(t, "server.Serve failed: %s", err)
 	}
+	defer server.Stop()
 
 	mountEntry, err := ns.Resolve(ctx, "leaf")
 	if err != nil {
diff --git a/profiles/internal/naming/namespace/glob.go b/profiles/internal/naming/namespace/glob.go
index f2dd4cf..c73d6f8 100644
--- a/profiles/internal/naming/namespace/glob.go
+++ b/profiles/internal/naming/namespace/glob.go
@@ -9,14 +9,15 @@
 	"strings"
 	"sync"
 
-	"v.io/x/ref/lib/glob"
+	"v.io/x/lib/vlog"
 
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/naming"
 	"v.io/v23/rpc"
 	"v.io/v23/verror"
-	"v.io/x/lib/vlog"
+
+	"v.io/x/ref/lib/glob"
 )
 
 type tracks struct {
diff --git a/profiles/internal/naming/namespace/perms_test.go b/profiles/internal/naming/namespace/perms_test.go
index 93a30e5..0719656 100644
--- a/profiles/internal/naming/namespace/perms_test.go
+++ b/profiles/internal/naming/namespace/perms_test.go
@@ -239,6 +239,7 @@
 	if err != nil {
 		t.Fatalf("v23.NewServer failed: %v", err)
 	}
+	defer server.Stop()
 	if _, err := server.Listen(v23.GetListenSpec(rootCtx)); err != nil {
 		t.Fatalf("Failed to Listen: %s", err)
 	}
diff --git a/profiles/internal/rpc/client.go b/profiles/internal/rpc/client.go
index f00c4ba..8fbab8f 100644
--- a/profiles/internal/rpc/client.go
+++ b/profiles/internal/rpc/client.go
@@ -566,7 +566,7 @@
 				go func() {
 					select {
 					case <-doneChan:
-						vtrace.GetSpan(fc.ctx).Annotate("Cancelled")
+						vtrace.GetSpan(fc.ctx).Annotate("Canceled")
 						fc.flow.Cancel()
 					case <-fc.flow.Closed():
 					}
@@ -899,8 +899,6 @@
 	defer vlog.LogCall()()
 	switch {
 	case fc.response.Error != nil:
-		// TODO(cnicolaou): this will become a verror.E when we convert the
-		// server.
 		return verror.New(verror.ErrBadProtocol, fc.ctx, fc.response.Error)
 	case fc.response.EndStreamResults:
 		return io.EOF
@@ -913,8 +911,6 @@
 		return fc.close(berr)
 	}
 	if fc.response.Error != nil {
-		// TODO(cnicolaou): this will become a verror.E when we convert the
-		// server.
 		return verror.New(verror.ErrBadProtocol, fc.ctx, fc.response.Error)
 	}
 	if fc.response.EndStreamResults {