ref/runtime/internal/rpc/stream/manager: Fix test hang.
The problem is that the test opens a net.Conn to a stream manager
(just using net.Dial) and then never writes on it.
When we start trying to accept a VIF we have no way of timing out
or cancelling that operation. We should fix that, but I only
want to deal with it in the new implementation, so for now
I just close the net.Conn which allows everything to shut down.
Change-Id: Ic683ed647ed5475b8287b06d2755edcf10beacea
diff --git a/runtime/internal/rpc/stream/manager/listener.go b/runtime/internal/rpc/stream/manager/listener.go
index a7afc98..6ef5453 100644
--- a/runtime/internal/rpc/stream/manager/listener.go
+++ b/runtime/internal/rpc/stream/manager/listener.go
@@ -293,7 +293,7 @@
ln.connsMu.Lock()
var vifs []*vif.VIF
if ln.vifs != nil {
- vifs, ln.vifs = ln.vifs.List(), nil
+ vifs = ln.vifs.List()
}
ln.connsMu.Unlock()
if len(vifs) > 0 {
diff --git a/runtime/internal/rpc/stream/manager/manager_test.go b/runtime/internal/rpc/stream/manager/manager_test.go
index 12f7bd5..f1c0377 100644
--- a/runtime/internal/rpc/stream/manager/manager_test.go
+++ b/runtime/internal/rpc/stream/manager/manager_test.go
@@ -431,6 +431,7 @@
pserver = testutil.NewPrincipal("server")
lopts = []stream.ListenerOpt{vc.StartTimeout{Duration: startTime}}
)
+ defer server.Shutdown()
sctx, _ := v23.WithPrincipal(ctx, pserver)
@@ -452,10 +453,11 @@
// Arrange for the above goroutine to exit when the test finishes.
defer ln.Close()
- _, err = net.Dial(ep.Addr().Network(), ep.Addr().String())
+ conn, err := net.Dial(ep.Addr().Network(), ep.Addr().String())
if err != nil {
t.Fatalf("net.Dial failed: %v", err)
}
+ defer conn.Close()
// Trigger the start timers.
triggerTimers()