Merge pull request #127 from noxiouz/fix_datarace_GetLevel

[Race] Fix datarace in GetLevel
This commit is contained in:
Simon Eskildsen 2015-02-19 19:52:08 -05:00
commit 6dcec6ed3b
2 changed files with 20 additions and 0 deletions

View File

@ -36,6 +36,8 @@ func SetLevel(level Level) {
// GetLevel returns the standard logger level.
func GetLevel() Level {
std.mu.Lock()
defer std.mu.Unlock()
return std.Level
}

View File

@ -5,6 +5,7 @@ import (
"encoding/json"
"strconv"
"strings"
"sync"
"testing"
"github.com/stretchr/testify/assert"
@ -281,3 +282,20 @@ func TestParseLevel(t *testing.T) {
l, err = ParseLevel("invalid")
assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
}
func TestGetSetLevelRace(t *testing.T) {
wg := sync.WaitGroup{}
for i := 0; i < 100; i++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
if i%2 == 0 {
SetLevel(InfoLevel)
} else {
GetLevel()
}
}(i)
}
wg.Wait()
}