Fix the misusage of t.Fatal() in 4 test functions

This commit is contained in:
Ziheng Liu 2020-03-03 23:00:28 -05:00
parent da442c51f1
commit 59e65f9618

View File

@ -73,6 +73,7 @@ func TestOpen_MultipleGoroutines(t *testing.T) {
path := tempfile() path := tempfile()
defer os.RemoveAll(path) defer os.RemoveAll(path)
var wg sync.WaitGroup var wg sync.WaitGroup
errCh := make(chan error, iterations*instances)
for iteration := 0; iteration < iterations; iteration++ { for iteration := 0; iteration < iterations; iteration++ {
for instance := 0; instance < instances; instance++ { for instance := 0; instance < instances; instance++ {
wg.Add(1) wg.Add(1)
@ -80,15 +81,23 @@ func TestOpen_MultipleGoroutines(t *testing.T) {
defer wg.Done() defer wg.Done()
db, err := bolt.Open(path, 0600, nil) db, err := bolt.Open(path, 0600, nil)
if err != nil { if err != nil {
t.Fatal(err) errCh <- err
return
} }
if err := db.Close(); err != nil { if err := db.Close(); err != nil {
t.Fatal(err) errCh <- err
return
} }
}() }()
} }
wg.Wait() wg.Wait()
} }
close(errCh)
for err := range errCh {
if err != nil {
t.Fatalf("error from inside goroutine: %v", err)
}
}
} }
// Ensure that opening a database with a blank path returns an error. // Ensure that opening a database with a blank path returns an error.
@ -428,19 +437,20 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
done := make(chan struct{}) done := make(chan error, 1)
go func() { go func() {
if err := wtx.Commit(); err != nil { err := wtx.Commit()
t.Fatal(err) done <- err
}
done <- struct{}{}
}() }()
select { select {
case <-time.After(5 * time.Second): case <-time.After(5 * time.Second):
t.Errorf("unexpected that the reader blocks writer") t.Errorf("unexpected that the reader blocks writer")
case <-done: case err := <-done:
if err != nil {
t.Fatal(err)
}
} }
if err := rtx.Rollback(); err != nil { if err := rtx.Rollback(); err != nil {
@ -698,18 +708,19 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
} }
// Open update in separate goroutine. // Open update in separate goroutine.
done := make(chan struct{}) done := make(chan error, 1)
go func() { go func() {
if err := db.Close(); err != nil { err := db.Close()
t.Fatal(err) done <- err
}
close(done)
}() }()
// Ensure database hasn't closed. // Ensure database hasn't closed.
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
select { select {
case <-done: case err := <-done:
if err != nil {
t.Errorf("error from inside goroutine: %v", err)
}
t.Fatal("database closed too early") t.Fatal("database closed too early")
default: default:
} }
@ -727,7 +738,10 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
// Ensure database closed now. // Ensure database closed now.
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
select { select {
case <-done: case err := <-done:
if err != nil {
t.Fatalf("error from inside goroutine: %v", err)
}
default: default:
t.Fatal("database did not close") t.Fatal("database did not close")
} }
@ -1520,6 +1534,7 @@ func BenchmarkDBBatchManual10x100(b *testing.B) {
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
start := make(chan struct{}) start := make(chan struct{})
var wg sync.WaitGroup var wg sync.WaitGroup
errCh := make(chan error, 10)
for major := 0; major < 10; major++ { for major := 0; major < 10; major++ {
wg.Add(1) wg.Add(1)
@ -1542,13 +1557,18 @@ func BenchmarkDBBatchManual10x100(b *testing.B) {
} }
return nil return nil
} }
if err := db.Update(insert100); err != nil { err := db.Update(insert100)
b.Fatal(err) errCh <- err
}
}(uint32(major)) }(uint32(major))
} }
close(start) close(start)
wg.Wait() wg.Wait()
close(errCh)
for err := range errCh {
if err != nil {
b.Fatal(err)
}
}
} }
b.StopTimer() b.StopTimer()