Skip to content

Commit bc8d4bc

Browse files
committed
Add the 'verbose' parameter to transfers test.
1 parent 704539f commit bc8d4bc

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

contrib/pg_dtm/tests/transfers.go

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ func (c *ConnStrings) Set(value string) error {
3030
var cfg struct {
3131
ConnStrs ConnStrings
3232

33+
Verbose bool
3334
Isolation string // "repeatable read" or "read committed"
3435

3536
Accounts struct {
@@ -100,6 +101,7 @@ func init() {
100101
flag.IntVar(&cfg.Readers.Num, "r", 1, "The number of readers")
101102
flag.IntVar(&cfg.Writers.Num, "w", 8, "The number of writers")
102103
flag.IntVar(&cfg.Writers.Updates, "u", 10000, "The number updates each writer performs")
104+
flag.BoolVar(&cfg.Verbose, "v", false, "Show progress and other stuff for mortals")
103105
flag.BoolVar(&cfg.Writers.AllowGlobal, "g", false, "Allow global updates")
104106
flag.BoolVar(&cfg.Writers.AllowLocal, "l", false, "Allow local updates")
105107
flag.BoolVar(&cfg.Writers.PrivateRows, "p", false, "Private rows (avoid waits/aborts caused by concurrent updates of the same rows)")
@@ -136,7 +138,9 @@ func init() {
136138
}
137139

138140
func main() {
141+
start := time.Now()
139142
prepare(cfg.ConnStrs)
143+
fmt.Printf("database prepared in %0.2f seconds\n", time.Since(start).Seconds())
140144

141145
var writerWg sync.WaitGroup
142146
var readerWg sync.WaitGroup
@@ -145,21 +149,28 @@ func main() {
145149
cAborts := make(chan int)
146150
go progress(cfg.Writers.Num * cfg.Writers.Updates, cCommits, cAborts)
147151

152+
start = time.Now()
148153
writerWg.Add(cfg.Writers.Num)
149154
for i := 0; i < cfg.Writers.Num; i++ {
150155
go writer(i, cCommits, cAborts, &writerWg)
151156
}
152157
running = true
153158

159+
inconsistency := false
154160
readerWg.Add(cfg.Readers.Num)
155161
for i := 0; i < cfg.Readers.Num; i++ {
156-
go reader(&readerWg)
162+
go reader(&readerWg, &inconsistency)
157163
}
158164

159165
writerWg.Wait()
166+
fmt.Printf("writers finished in %0.2f seconds\n", time.Since(start).Seconds())
167+
160168
running = false
161169
readerWg.Wait()
162170

171+
if inconsistency {
172+
fmt.Printf("INCONSISTENCY DETECTED\n")
173+
}
163174
fmt.Printf("done.\n")
164175
}
165176

@@ -200,10 +211,12 @@ func prepare_one(connstr string, wg *sync.WaitGroup) {
200211
for i := 0; i < cfg.Accounts.Num; i++ {
201212
exec(conn, "insert into t values ($1, $2)", i, cfg.Accounts.Balance)
202213
if time.Since(start).Seconds() > 1 {
203-
fmt.Printf(
204-
"inserted %0.2f%%: %d of %d records\n",
205-
float32(i + 1) * 100.0 / float32(cfg.Accounts.Num), i + 1, cfg.Accounts.Num,
206-
)
214+
if cfg.Verbose {
215+
fmt.Printf(
216+
"inserted %0.2f%%: %d of %d records\n",
217+
float32(i + 1) * 100.0 / float32(cfg.Accounts.Num), i + 1, cfg.Accounts.Num,
218+
)
219+
}
207220
start = time.Now()
208221
}
209222
}
@@ -230,10 +243,12 @@ func progress(total int, cCommits chan int, cAborts chan int) {
230243
commits += newcommits
231244
aborts += newaborts
232245
if time.Since(start).Seconds() > 1 {
233-
fmt.Printf(
234-
"progress %0.2f%%: %d commits, %d aborts\n",
235-
float32(commits) * 100.0 / float32(total), commits, aborts,
236-
)
246+
if cfg.Verbose {
247+
fmt.Printf(
248+
"progress %0.2f%%: %d commits, %d aborts\n",
249+
float32(commits) * 100.0 / float32(total), commits, aborts,
250+
)
251+
}
237252
start = time.Now()
238253
}
239254
}
@@ -365,7 +380,7 @@ func writer(id int, cCommits chan int, cAborts chan int, wg *sync.WaitGroup) {
365380
wg.Done()
366381
}
367382

368-
func reader(wg *sync.WaitGroup) {
383+
func reader(wg *sync.WaitGroup, inconsistency *bool) {
369384
var prevSum int64 = 0
370385

371386
var conns []*pgx.Conn
@@ -398,6 +413,10 @@ func reader(wg *sync.WaitGroup) {
398413

399414
if (sum != prevSum) {
400415
fmt.Printf("Total=%d xid=%d\n", sum, xid)
416+
if (prevSum != 0) {
417+
fmt.Printf("inconsistency!\n")
418+
*inconsistency = true
419+
}
401420
prevSum = sum
402421
}
403422
}

0 commit comments

Comments
 (0)