sensorlog: Address https://v.io/i/1220

- reverts https://v.io/c/20483
- changes v23test to not share a bin dir across test main's
(bin dir is still shared across tests within a given test
main, but that's safe since "go test" will not run such
tests concurrently by default)
- changes v23test.StartRootMountTable and
v23test.StartSyncbase to use gosh.Shell.FuncCmd
(refactoring syncbased and mounttabled as needed to make
this possible)

A side effect of this change is that tests should run much
faster, because for the common case of tests that previously
used StartRootMountTable and/or StartSyncbase, but didn't
directly call BuildGoPkg, we'll no longer build Go packages
during test execution.

MultiPart: 5/5

Change-Id: Idceb4eee171142b5c6bccba26d12ee4f3351d791
diff --git a/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go b/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
index c47e31c..ce7d5f3 100644
--- a/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
+++ b/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
@@ -15,6 +15,8 @@
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/naming"
+	"v.io/x/ref/services/mounttable/mounttablelib"
+	"v.io/x/ref/services/syncbase/syncbaselib"
 	"v.io/x/ref/test/v23test"
 	sltu "v.io/x/sensorlog/internal/client/testutil"
 	"v.io/x/sensorlog/internal/measure"
@@ -36,19 +38,17 @@
 	globalMT, globalMTShutdown := startAdditionalMT(sh, "--v23.tcp.address=127.0.0.1:0")
 	// Mount the local mounttable in the global one.
 	localMT := naming.Join(globalMT, "localmt")
-	sh.StartRootMountTable("--name=" + localMT)
+	sh.StartRootMountTableWithOpts(mounttablelib.Opts{MountName: localMT})
 
 	clientSb := "sb/client"
 	clientCtx := sh.ForkContext("u:client")
 	clientSbCreds := sh.ForkCredentials("u:client:sb")
-	sh.StartSyncbase(clientSbCreds, clientSb, "",
-		`{"Read": {"In":["root:u:client"]}, "Write": {"In":["root:u:client"]}, "Admin": {"In":["root:u:client"]}, "Resolve": {"In":["..."]}}`)
+	sh.StartSyncbase(clientSbCreds, syncbaselib.Opts{Name: clientSb}, `{"Read": {"In":["root:u:client"]}, "Write": {"In":["root:u:client"]}, "Admin": {"In":["root:u:client"]}, "Resolve": {"In":["..."]}}`)
 
 	measuredSb := "sb/measured"
 	measuredCtx := sh.ForkContext("u:measured")
 	measuredSbCreds := sh.ForkCredentials("u:measured:sb")
-	sh.StartSyncbase(measuredSbCreds, measuredSb, "",
-		`{"Read": {"In":["root:u:measured"]}, "Write": {"In":["root:u:measured"]}, "Admin": {"In":["root:u:measured"]}, "Resolve": {"In":["..."]}}`)
+	sh.StartSyncbase(measuredSbCreds, syncbaselib.Opts{Name: measuredSb}, `{"Read": {"In":["root:u:measured"]}, "Write": {"In":["root:u:measured"]}, "Admin": {"In":["root:u:measured"]}, "Resolve": {"In":["..."]}}`)
 
 	time.Sleep(1 * time.Second)
 
diff --git a/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go b/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
index ee1c197..1616768 100644
--- a/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
+++ b/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
@@ -13,6 +13,7 @@
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/naming"
+	"v.io/x/ref/services/syncbase/syncbaselib"
 	"v.io/x/ref/test/v23test"
 	"v.io/x/sensorlog/internal/client"
 	sltu "v.io/x/sensorlog/internal/client/testutil"
@@ -30,14 +31,12 @@
 	clientSb := "sb/client"
 	clientCtx := sh.ForkContext("u:client")
 	clientSbCreds := sh.ForkCredentials("u:client:sb")
-	sh.StartSyncbase(clientSbCreds, clientSb, "",
-		`{"Read": {"In":["root:u:client"]}, "Write": {"In":["root:u:client"]}, "Admin": {"In":["root:u:client"]}, "Resolve": {"In":["..."]}}`)
+	sh.StartSyncbase(clientSbCreds, syncbaselib.Opts{Name: clientSb}, `{"Read": {"In":["root:u:client"]}, "Write": {"In":["root:u:client"]}, "Admin": {"In":["root:u:client"]}, "Resolve": {"In":["..."]}}`)
 
 	measuredSb := "sb/measured"
 	measuredCreds := sh.ForkCredentials("u:measured")
 	measuredSbCreds := sh.ForkCredentials("u:measured:sb")
-	sh.StartSyncbase(measuredSbCreds, measuredSb, "",
-		`{"Read": {"In":["root:u:measured"]}, "Write": {"In":["root:u:measured"]}, "Admin": {"In":["root:u:measured"]}, "Resolve": {"In":["..."]}}`)
+	sh.StartSyncbase(measuredSbCreds, syncbaselib.Opts{Name: measuredSb}, `{"Read": {"In":["root:u:measured"]}, "Write": {"In":["root:u:measured"]}, "Admin": {"In":["root:u:measured"]}, "Resolve": {"In":["..."]}}`)
 
 	time.Sleep(1 * time.Second)
 
@@ -45,8 +44,7 @@
 	measuredPath := v23test.BuildGoPkg(sh, "v.io/x/sensorlog/measured")
 	devId := "measured1"
 	publishSb := naming.Join(mtName, measuredSb)
-	measured := sh.Cmd(measuredPath, "-alsologtostderr", "-service="+measuredSb,
-		"-devid="+devId, "-admin=root:u:client", "-publish-sb="+publishSb)
+	measured := sh.Cmd(measuredPath, "-alsologtostderr", "-service="+measuredSb, "-devid="+devId, "-admin=root:u:client", "-publish-sb="+publishSb)
 	measured = measured.WithCredentials(measuredCreds)
 	measured.PropagateOutput = true
 	measured.Start()