Browse Source

Fix data race in lexer and lexer test

As described in #1898 'go test -race' detects a race in lexer code. This
pacth fixes it and also add '-race' option to test target to prevent
regression.
pull/1925/head
Alexey Miroshkin 8 years ago
parent
commit
485f7dde08
  1. 2
      Makefile
  2. 11
      promql/lex.go
  3. 4
      promql/lex_test.go

2
Makefile

@ -38,7 +38,7 @@ check_license:
test:
@echo ">> running tests"
@$(GO) test -short $(pkgs)
@$(GO) test -race -short $(pkgs)
format:
@echo ">> formatting code"

11
promql/lex.go

@ -428,9 +428,16 @@ func (l *lexer) nextItem() item {
// lex creates a new scanner for the input string.
func lex(input string) *lexer {
return lexWithSeriesDesc(input, false)
}
// lexWithSeriesDesc creates a new scanner for the input string
// and specify seriesDesc to prevent data race in tests
func lexWithSeriesDesc(input string, seriesDesc bool) *lexer {
l := &lexer{
input: input,
items: make(chan item),
input: input,
items: make(chan item),
seriesDesc: seriesDesc,
}
go l.run()
return l

4
promql/lex_test.go

@ -438,9 +438,7 @@ var tests = []struct {
// for the parser to avoid duplicated effort.
func TestLexer(t *testing.T) {
for i, test := range tests {
l := lex(test.input)
l.seriesDesc = test.seriesDesc
l := lexWithSeriesDesc(test.input, test.seriesDesc)
out := []item{}
for it := range l.items {
out = append(out, it)

Loading…
Cancel
Save