properly fix the hooks race test

This commit is contained in:
David Bariod 2018-07-20 13:16:19 +02:00
parent 92052687f8
commit 6999e59e73
1 changed files with 18 additions and 6 deletions

View File

@ -1,8 +1,10 @@
package test
import (
"math/rand"
"sync"
"testing"
"time"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
@ -38,24 +40,34 @@ func TestAllHooks(t *testing.T) {
}
func TestLoggingWithHooksRace(t *testing.T) {
rand.Seed(time.Now().Unix())
unlocker := rand.Int() % 100
assert := assert.New(t)
logger, hook := NewNullLogger()
var wg sync.WaitGroup
wg.Add(100)
var wgOne, wgAll sync.WaitGroup
wgOne.Add(1)
wgAll.Add(100)
for i := 0; i < 100; i++ {
go func() {
go func(i int) {
logger.Info("info")
wg.Done()
}()
wgAll.Done()
if i == unlocker {
wgOne.Done()
}
}(i)
}
wg.Wait()
wgOne.Wait()
assert.Equal(logrus.InfoLevel, hook.LastEntry().Level)
assert.Equal("info", hook.LastEntry().Message)
wgAll.Wait()
entries := hook.AllEntries()
assert.Equal(100, len(entries))
}