func TestOpenRetry(t *testing.T) { c := 0 rand := new(failReader) p := &Pool{Dial: func(net, addr string) (net.Conn, error) { c++ conn := dial(t) return conn, nil }} config := new(ssh.ClientConfig) *config = *clientConfig config.Rand = rand _, err := p.Open("net", "addr", config) if err != nil { t.Fatal("unexpected error:", err) } conn := p.tab[p.key("net", "addr", config)].c *rand = true config.Rand = nil _, err = p.Open("net", "addr", config) if err != nil { t.Fatal("unexpected error:", err) } if c != 2 { t.Fatalf("calls = %d want 2", c) } const errClosing = "use of closed network connection" // from package net if err := conn.Close(); err == nil || err.Error() != errClosing { t.Fatalf("conn still open, want closed; err = %v", err) } }