diff --git a/README.md b/README.md index 7cb3899..7eb196d 100644 --- a/README.md +++ b/README.md @@ -66,8 +66,12 @@ Usage 2. download gobench ``` - GOPATH=/tmp/ go get github.com/valyala/fasthttp - GOPATH=/tmp/ go get github.com/cmpxchg16/gobench + mkdir -p $GOPATH/src + cd $GOPATH/src + git clone https://github.com/cmpxchg16/gobench + cd gobench + go get + go build ``` 3. run some http server on port 80 diff --git a/gobench.go b/gobench.go index d186b67..84b4170 100644 --- a/gobench.go +++ b/gobench.go @@ -16,6 +16,7 @@ import ( "sync/atomic" "time" + "crypto/tls" "github.com/valyala/fasthttp" ) @@ -30,6 +31,7 @@ var ( writeTimeout int readTimeout int authHeader string + insecureSkipVerify bool ) type Configuration struct { @@ -84,6 +86,7 @@ func init() { flag.StringVar(&url, "u", "", "URL") flag.StringVar(&urlsFilePath, "f", "", "URL's file path (line seperated)") flag.BoolVar(&keepAlive, "k", true, "Do HTTP keep-alive") + flag.BoolVar(&insecureSkipVerify, "s", false, "Skip cert check") flag.StringVar(&postDataFilePath, "d", "", "HTTP POST data file path") flag.Int64Var(&period, "t", -1, "Period of time (in seconds)") flag.IntVar(&writeTimeout, "tw", 5000, "Write timeout (in milliseconds)") @@ -193,6 +196,7 @@ func NewConfiguration() *Configuration { err := proc.Signal(os.Interrupt) if err != nil { log.Println(err) + fmt.Println(err) return } }() @@ -232,6 +236,13 @@ func NewConfiguration() *Configuration { configuration.myClient.WriteTimeout = time.Duration(writeTimeout) * time.Millisecond configuration.myClient.MaxConnsPerHost = clients + + // if flag set, then allow skip of cert check + if(insecureSkipVerify) { + config := tls.Config{InsecureSkipVerify: true} + configuration.myClient.TLSConfig = &config + } + configuration.myClient.Dial = MyDialer() return configuration @@ -273,7 +284,9 @@ func client(configuration *Configuration, result *Result, done *sync.WaitGroup) resp := fasthttp.AcquireResponse() err := configuration.myClient.Do(req, resp) + if(err!=nil) { fmt.Printf("%s\n",err) } statusCode := resp.StatusCode() + //fmt.Printf("statusCode %d\n",fasthttp.StatusOK) result.requests++ fasthttp.ReleaseRequest(req) fasthttp.ReleaseResponse(resp)