x/ref/runtime/internal/...: make sure tests finish rpc's before next test starts.

The current rpc implementation leaves go routines running around waiting
for responses from the remote end even after the root context is shutdown.
Consequently, these may attempt to access the root context after it
has been shutdown which will lead to a panic. The common case is to
call v23.GetPrincipal(ctx).

Change-Id: Ib32edbb97d575c1d6d7dfdffac1875652668f52c
diff --git a/runtime/internal/rpc/test/client_test.go b/runtime/internal/rpc/test/client_test.go
index 0a82977..69d70e9 100644
--- a/runtime/internal/rpc/test/client_test.go
+++ b/runtime/internal/rpc/test/client_test.go
@@ -499,7 +499,7 @@
 	name := args[0]
 	got := ""
 	if err := v23.GetClient(ctx).Call(ctx, name, "Ping", nil, []interface{}{&got}); err != nil {
-		fmt.Errorf("unexpected error: %s", err)
+		return fmt.Errorf("unexpected error: %s", err)
 	}
 	fmt.Fprintf(env.Stdout, "RESULT=%s\n", got)
 	return nil
@@ -520,11 +520,12 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	ctx, _ = context.WithTimeout(ctx, time.Millisecond)
+	ctx, cancel := context.WithTimeout(ctx, time.Millisecond)
 	err := v23.GetClient(ctx).Call(ctx, name, "Sleep", nil, nil)
 	if got, want := verror.ErrorID(err), verror.ErrTimeout.ID; got != want {
 		t.Fatalf("got %v, want %v", got, want)
 	}
+	cancel()
 }
 
 func TestArgsAndResponses(t *testing.T) {
diff --git a/runtime/internal/rt/ipc_test.go b/runtime/internal/rt/ipc_test.go
index 5b3242b..29c8153 100644
--- a/runtime/internal/rt/ipc_test.go
+++ b/runtime/internal/rt/ipc_test.go
@@ -337,8 +337,10 @@
 	if err := pserver.BlessingStore().SetDefault(rootServerInvalidTPCaveat); err != nil {
 		t.Fatal(err)
 	}
-	if call, err := client.StartCall(clientCtx, serverName, "EchoBlessings", nil); verror.ErrorID(err) == verror.ErrNoAccess.ID {
+	call, err := client.StartCall(clientCtx, serverName, "EchoBlessings", nil)
+	if verror.ErrorID(err) == verror.ErrNoAccess.ID {
 		remoteBlessings, _ := call.RemoteBlessings()
 		t.Errorf("client.StartCall passed unexpectedly with remote end authenticated as: %v", remoteBlessings)
 	}
+	call.Finish() // make sure the rpc finishes before shutting down the test+runtime.
 }