Skip to content

Commit 21c56e6

Browse files
committed
feat: show more error information in zb output
Signed-off-by: Andrei Aaron <[email protected]>
1 parent 4684bcf commit 21c56e6

File tree

2 files changed

+48
-22
lines changed

2 files changed

+48
-22
lines changed

cmd/zb/helper.go

+25-17
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,12 @@ func pullAndCollect(url string, repos []string, manifestItem manifestStruct,
119119
func() {
120120
start := time.Now()
121121

122-
var isConnFail, isErr bool
123-
124-
var statusCode int
125-
126-
var latency time.Duration
122+
var (
123+
isConnFail, isErr bool
124+
statusCode int
125+
latency time.Duration
126+
err error
127+
)
127128

128129
defer func() {
129130
// send a stats record
@@ -132,6 +133,7 @@ func pullAndCollect(url string, repos []string, manifestItem manifestStruct,
132133
statusCode: statusCode,
133134
isConnFail: isConnFail,
134135
isErr: isErr,
136+
err: err,
135137
}
136138
}()
137139

@@ -144,8 +146,10 @@ func pullAndCollect(url string, repos []string, manifestItem manifestStruct,
144146
for repo, manifestTag := range manifestHash {
145147
manifestLoc := fmt.Sprintf("%s/v2/%s/manifests/%s", url, repo, manifestTag)
146148

149+
var resp *resty.Response
150+
147151
// check manifest
148-
resp, err := client.R().
152+
resp, err = client.R().
149153
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
150154
Head(manifestLoc)
151155

@@ -261,7 +265,7 @@ func pullAndCollect(url string, repos []string, manifestItem manifestStruct,
261265
blobLoc := fmt.Sprintf("%s/v2/%s/blobs/%s", url, repo, blobDigest)
262266

263267
// check blob
264-
resp, err := client.R().Head(blobLoc)
268+
resp, err = client.R().Head(blobLoc)
265269

266270
latency = time.Since(start)
267271

@@ -476,11 +480,12 @@ func pushMonolithAndCollect(workdir, url, trepo string, count int,
476480
func() {
477481
start := time.Now()
478482

479-
var isConnFail, isErr bool
480-
481-
var statusCode int
482-
483-
var latency time.Duration
483+
var (
484+
isConnFail, isErr bool
485+
statusCode int
486+
latency time.Duration
487+
err error
488+
)
484489

485490
defer func() {
486491
// send a stats record
@@ -489,6 +494,7 @@ func pushMonolithAndCollect(workdir, url, trepo string, count int,
489494
statusCode: statusCode,
490495
isConnFail: isConnFail,
491496
isErr: isErr,
497+
err: err,
492498
}
493499
}()
494500

@@ -680,11 +686,12 @@ func pushChunkAndCollect(workdir, url, trepo string, count int,
680686
func() {
681687
start := time.Now()
682688

683-
var isConnFail, isErr bool
684-
685-
var statusCode int
686-
687-
var latency time.Duration
689+
var (
690+
isConnFail, isErr bool
691+
statusCode int
692+
latency time.Duration
693+
err error
694+
)
688695

689696
defer func() {
690697
// send a stats record
@@ -693,6 +700,7 @@ func pushChunkAndCollect(workdir, url, trepo string, count int,
693700
statusCode: statusCode,
694701
isConnFail: isConnFail,
695702
isErr: isErr,
703+
err: err,
696704
}
697705
}()
698706

cmd/zb/perf.go

+23-5
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ type statsSummary struct {
126126
statusHist map[string]int
127127
rps float32
128128
mixedSize, mixedType bool
129-
errors int
129+
errorCount int
130+
errors []error
130131
}
131132

132133
func newStatsSummary(name string) statsSummary {
@@ -147,11 +148,16 @@ type statsRecord struct {
147148
statusCode int
148149
isConnFail bool
149150
isErr bool
151+
err error
150152
}
151153

152154
func updateStats(summary *statsSummary, record statsRecord) {
153155
if record.isConnFail || record.isErr {
154-
summary.errors++
156+
summary.errorCount++
157+
}
158+
159+
if record.err != nil {
160+
summary.errors = append(summary.errors, record.err)
155161
}
156162

157163
if summary.min < 0 || record.latency < summary.min {
@@ -208,9 +214,18 @@ func printStats(requests int, summary *statsSummary, outFmt string) {
208214
log.Printf("============\n")
209215
log.Printf("Test name:\t%s", summary.name)
210216
log.Printf("Time taken for tests:\t%v", summary.total)
211-
log.Printf("Complete requests:\t%v", requests-summary.errors)
212-
log.Printf("Failed requests:\t%v", summary.errors)
213217
log.Printf("Requests per second:\t%v", summary.rps)
218+
log.Printf("Complete requests:\t%v", requests-summary.errorCount)
219+
log.Printf("Failed requests:\t%v", summary.errorCount)
220+
221+
if len(summary.errors) > 0 {
222+
log.Print("Failures:")
223+
224+
for _, err := range summary.errors {
225+
log.Printf("\t%v", err)
226+
}
227+
}
228+
214229
log.Printf("\n")
215230

216231
if summary.mixedSize {
@@ -306,13 +321,16 @@ func GetCatalog(
306321

307322
var latency time.Duration
308323

324+
var err error
325+
309326
defer func() {
310327
// send a stats record
311328
statsCh <- statsRecord{
312329
latency: latency,
313330
statusCode: statusCode,
314331
isConnFail: isConnFail,
315332
isErr: isErr,
333+
err: err,
316334
}
317335
}()
318336

@@ -749,7 +767,7 @@ func Perf(
749767

750768
printStats(requests, &summary, outFmt)
751769

752-
if summary.errors != 0 && !zbError {
770+
if summary.errorCount != 0 && !zbError {
753771
zbError = true
754772
}
755773
}

0 commit comments

Comments
 (0)