(url string, jsonBytes []byte)
| 160 | } |
| 161 | |
| 162 | func runConstantInFlight(url string, jsonBytes []byte) { |
| 163 | if _numRequestsPerThread > 0 { |
| 164 | fmt.Printf("spawning %d threads, %d requests each, %s delay on each\n", _numConcurrent, _numRequestsPerThread, _requestDelay.String()) |
| 165 | } else { |
| 166 | fmt.Printf("spawning %d infinite threads, %s delay on each\n", _numConcurrent, _requestDelay.String()) |
| 167 | } |
| 168 | |
| 169 | var summedRequestCount uint64 |
| 170 | var summedSuccessCount uint64 |
| 171 | var summedHTTPErrCount uint64 |
| 172 | var summedGoErrCount uint64 |
| 173 | |
| 174 | start := time.Now() |
| 175 | loopNum := 1 |
| 176 | for { |
| 177 | wasKilled := runConstantInFlightIteration(url, jsonBytes, loopNum) |
| 178 | |
| 179 | summedRequestCount += _requestCount.Load() |
| 180 | summedSuccessCount += _successCount.Load() |
| 181 | summedHTTPErrCount += _httpErrCount.Load() |
| 182 | summedGoErrCount += _goErrCount.Load() |
| 183 | |
| 184 | _requestCount.Store(0) |
| 185 | _successCount.Store(0) |
| 186 | _httpErrCount.Store(0) |
| 187 | _goErrCount.Store(0) |
| 188 | |
| 189 | if loopNum >= _numMainLoops || wasKilled { |
| 190 | break |
| 191 | } |
| 192 | loopNum++ |
| 193 | } |
| 194 | |
| 195 | if _numMainLoops > 1 { |
| 196 | elapsed := time.Since(start) |
| 197 | requestRate := float64(summedRequestCount) / elapsed.Seconds() |
| 198 | fmt.Printf("\ntotal elapsed time: %s | %d requests @ %f req/s | %d succeeded | %d http errors | %d go errors\n", elapsed, summedRequestCount, requestRate, summedSuccessCount, summedHTTPErrCount, summedGoErrCount) |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | func runConstantInFlightIteration(url string, jsonBytes []byte, loopNum int) bool { |
| 203 | start := time.Now() |
no test coverage detected