Skip to content

Commit

Permalink
Merge pull request #206 from lzhfromustc/4_Fatal_misusages
Browse files Browse the repository at this point in the history
Fix the misusage of t.Fatal() in 4 test functions
  • Loading branch information
gyuho authored Mar 19, 2020
2 parents a74531a + 59e65f9 commit 4d27a42
Showing 1 changed file with 38 additions and 18 deletions.
56 changes: 38 additions & 18 deletions db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,22 +73,31 @@ func TestOpen_MultipleGoroutines(t *testing.T) {
path := tempfile()
defer os.RemoveAll(path)
var wg sync.WaitGroup
errCh := make(chan error, iterations*instances)
for iteration := 0; iteration < iterations; iteration++ {
for instance := 0; instance < instances; instance++ {
wg.Add(1)
go func() {
defer wg.Done()
db, err := bolt.Open(path, 0600, nil)
if err != nil {
t.Fatal(err)
errCh <- err
return
}
if err := db.Close(); err != nil {
t.Fatal(err)
errCh <- err
return
}
}()
}
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.
Expand Down Expand Up @@ -428,19 +437,20 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
t.Fatal(err)
}

done := make(chan struct{})
done := make(chan error, 1)

go func() {
if err := wtx.Commit(); err != nil {
t.Fatal(err)
}
done <- struct{}{}
err := wtx.Commit()
done <- err
}()

select {
case <-time.After(5 * time.Second):
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 {
Expand Down Expand Up @@ -698,18 +708,19 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
}

// Open update in separate goroutine.
done := make(chan struct{})
done := make(chan error, 1)
go func() {
if err := db.Close(); err != nil {
t.Fatal(err)
}
close(done)
err := db.Close()
done <- err
}()

// Ensure database hasn't closed.
time.Sleep(100 * time.Millisecond)
select {
case <-done:
case err := <-done:
if err != nil {
t.Errorf("error from inside goroutine: %v", err)
}
t.Fatal("database closed too early")
default:
}
Expand All @@ -727,7 +738,10 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
// Ensure database closed now.
time.Sleep(100 * time.Millisecond)
select {
case <-done:
case err := <-done:
if err != nil {
t.Fatalf("error from inside goroutine: %v", err)
}
default:
t.Fatal("database did not close")
}
Expand Down Expand Up @@ -1520,6 +1534,7 @@ func BenchmarkDBBatchManual10x100(b *testing.B) {
for i := 0; i < b.N; i++ {
start := make(chan struct{})
var wg sync.WaitGroup
errCh := make(chan error, 10)

for major := 0; major < 10; major++ {
wg.Add(1)
Expand All @@ -1542,13 +1557,18 @@ func BenchmarkDBBatchManual10x100(b *testing.B) {
}
return nil
}
if err := db.Update(insert100); err != nil {
b.Fatal(err)
}
err := db.Update(insert100)
errCh <- err
}(uint32(major))
}
close(start)
wg.Wait()
close(errCh)
for err := range errCh {
if err != nil {
b.Fatal(err)
}
}
}

b.StopTimer()
Expand Down

0 comments on commit 4d27a42

Please sign in to comment.