func bench(target string) { fmt.Println("begin bench to: " + target + " ...") succ := 0 fail := 0 var t time.Duration = 0 for i := 0; i < 10 || t.Seconds() < 30; i++ { start := time.Now() resp, err := net.NewHttpGet(target) if err == nil { defer resp.Close() _, err := resp.ReadAll() if err == nil { succ++ end := time.Now() t += end.Sub(start) continue } } fail++ } fmt.Printf("succ: %d\n", succ) if succ > 0 { fmt.Println("used: " + t.String()) fmt.Println("avg: " + time.Duration(int64(t)/int64(succ)).String()) } fmt.Printf("fail: %d\n", fail) }
func (p *Proxy) testUrl( target string, w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "proxy test: "+target) start := time.Now() resp, err := net.NewHttpGet(target) if err != nil { fmt.Fprintln(w, "error: "+err.Error()) } else { defer resp.Close() content, err := resp.ReadAll() end := time.Now() if err != nil { fmt.Fprintf(w, "error: %s", err.Error()) } else { fmt.Fprintf(w, "goroutins count: %d\n", runtime.NumGoroutine()) fmt.Fprintln(w, "used time: "+end.Sub(start).String()) fmt.Fprintln(w, "content: [[[[[[[") fmt.Fprintln(w, content) fmt.Fprintln(w, "]]]]]]]") } } }