| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Bridge package to expose http internals to tests in the http_test |
| // package. |
| |
| package http |
| |
| import "time" |
| |
| func (t *Transport) IdleConnKeysForTesting() (keys []string) { |
| keys = make([]string, 0) |
| t.lk.Lock() |
| defer t.lk.Unlock() |
| if t.idleConn == nil { |
| return |
| } |
| for key := range t.idleConn { |
| keys = append(keys, key) |
| } |
| return |
| } |
| |
| func (t *Transport) IdleConnCountForTesting(cacheKey string) int { |
| t.lk.Lock() |
| defer t.lk.Unlock() |
| if t.idleConn == nil { |
| return 0 |
| } |
| conns, ok := t.idleConn[cacheKey] |
| if !ok { |
| return 0 |
| } |
| return len(conns) |
| } |
| |
| func NewTestTimeoutHandler(handler Handler, ch <-chan time.Time) Handler { |
| f := func() <-chan time.Time { |
| return ch |
| } |
| return &timeoutHandler{handler, f, ""} |
| } |