linter: (1/2) enable errcheck (#5064)

## Description

partially cleanup in preparation for errcheck

i ignored a bunch of defer errors in tests but with the update to go 1.14 we can use `t.Cleanup(func() { if err := <>; err != nil {..}}` to cover those errors, I will do this in pr number two of enabling errcheck.

ref #5059
This commit is contained in:
Marko
2020-07-01 17:13:11 +02:00
committed by GitHub
parent 8ec8385427
commit 7e2cc1db5e
35 changed files with 289 additions and 200 deletions

View File

@@ -9,23 +9,29 @@ import (
func TestEventCache_Flush(t *testing.T) {
evsw := NewEventSwitch()
evsw.Start()
evsw.AddListenerForEvent("nothingness", "", func(data EventData) {
err := evsw.Start()
require.NoError(t, err)
err = evsw.AddListenerForEvent("nothingness", "", func(data EventData) {
// Check we are not initialising an empty buffer full of zeroed eventInfos in the EventCache
require.FailNow(t, "We should never receive a message on this switch since none are fired")
})
require.NoError(t, err)
evc := NewEventCache(evsw)
evc.Flush()
// Check after reset
evc.Flush()
fail := true
pass := false
evsw.AddListenerForEvent("somethingness", "something", func(data EventData) {
err = evsw.AddListenerForEvent("somethingness", "something", func(data EventData) {
if fail {
require.FailNow(t, "Shouldn't see a message until flushed")
}
pass = true
})
require.NoError(t, err)
evc.FireEvent("something", struct{ int }{1})
evc.FireEvent("something", struct{ int }{2})
evc.FireEvent("something", struct{ int }{3})

View File

@@ -17,15 +17,16 @@ func TestAddListenerForEventFireOnce(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
messages := make(chan EventData)
evsw.AddListenerForEvent("listener", "event",
err = evsw.AddListenerForEvent("listener", "event",
func(data EventData) {
// test there's no deadlock if we remove the listener inside a callback
evsw.RemoveListener("listener")
messages <- data
})
require.NoError(t, err)
go evsw.FireEvent("event", "data")
received := <-messages
if received != "data" {
@@ -39,16 +40,17 @@ func TestAddListenerForEventFireMany(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
doneSum := make(chan uint64)
doneSending := make(chan uint64)
numbers := make(chan uint64, 4)
// subscribe one listener for one event
evsw.AddListenerForEvent("listener", "event",
err = evsw.AddListenerForEvent("listener", "event",
func(data EventData) {
numbers <- data.(uint64)
})
require.NoError(t, err)
// collect received events
go sumReceivedNumbers(numbers, doneSum)
// go fire events
@@ -68,7 +70,7 @@ func TestAddListenerForDifferentEvents(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
doneSum := make(chan uint64)
doneSending1 := make(chan uint64)
@@ -76,18 +78,21 @@ func TestAddListenerForDifferentEvents(t *testing.T) {
doneSending3 := make(chan uint64)
numbers := make(chan uint64, 4)
// subscribe one listener to three events
evsw.AddListenerForEvent("listener", "event1",
err = evsw.AddListenerForEvent("listener", "event1",
func(data EventData) {
numbers <- data.(uint64)
})
evsw.AddListenerForEvent("listener", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener", "event2",
func(data EventData) {
numbers <- data.(uint64)
})
evsw.AddListenerForEvent("listener", "event3",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener", "event3",
func(data EventData) {
numbers <- data.(uint64)
})
require.NoError(t, err)
// collect received events
go sumReceivedNumbers(numbers, doneSum)
// go fire events
@@ -113,7 +118,7 @@ func TestAddDifferentListenerForDifferentEvents(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
doneSum1 := make(chan uint64)
doneSum2 := make(chan uint64)
@@ -123,26 +128,31 @@ func TestAddDifferentListenerForDifferentEvents(t *testing.T) {
numbers1 := make(chan uint64, 4)
numbers2 := make(chan uint64, 4)
// subscribe two listener to three events
evsw.AddListenerForEvent("listener1", "event1",
err = evsw.AddListenerForEvent("listener1", "event1",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener1", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener1", "event2",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener1", "event3",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener1", "event3",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener2", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener2", "event2",
func(data EventData) {
numbers2 <- data.(uint64)
})
evsw.AddListenerForEvent("listener2", "event3",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener2", "event3",
func(data EventData) {
numbers2 <- data.(uint64)
})
require.NoError(t, err)
// collect received events for listener1
go sumReceivedNumbers(numbers1, doneSum1)
// collect received events for listener2
@@ -175,7 +185,7 @@ func TestAddAndRemoveListenerConcurrency(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
done1 := make(chan struct{})
done2 := make(chan struct{})
@@ -193,11 +203,12 @@ func TestAddAndRemoveListenerConcurrency(t *testing.T) {
go func() {
for i := 0; i < roundCount; i++ {
index := i
evsw.AddListenerForEvent("listener", fmt.Sprintf("event%d", index),
err = evsw.AddListenerForEvent("listener", fmt.Sprintf("event%d", index),
func(data EventData) {
t.Errorf("should not run callback for %d.\n", index)
stopInputEvent = true
})
require.NoError(t, err)
}
close(done2)
}()
@@ -219,7 +230,7 @@ func TestAddAndRemoveListener(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
doneSum1 := make(chan uint64)
doneSum2 := make(chan uint64)
@@ -228,14 +239,16 @@ func TestAddAndRemoveListener(t *testing.T) {
numbers1 := make(chan uint64, 4)
numbers2 := make(chan uint64, 4)
// subscribe two listener to three events
evsw.AddListenerForEvent("listener", "event1",
err = evsw.AddListenerForEvent("listener", "event1",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener", "event2",
func(data EventData) {
numbers2 <- data.(uint64)
})
require.NoError(t, err)
// collect received events for event1
go sumReceivedNumbers(numbers1, doneSum1)
// collect received events for event2
@@ -264,19 +277,23 @@ func TestRemoveListener(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
count := 10
sum1, sum2 := 0, 0
// add some listeners and make sure they work
evsw.AddListenerForEvent("listener", "event1",
err = evsw.AddListenerForEvent("listener", "event1",
func(data EventData) {
sum1++
})
evsw.AddListenerForEvent("listener", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener", "event2",
func(data EventData) {
sum2++
})
require.NoError(t, err)
for i := 0; i < count; i++ {
evsw.FireEvent("event1", true)
evsw.FireEvent("event2", true)
@@ -317,7 +334,7 @@ func TestRemoveListenersAsync(t *testing.T) {
evsw := NewEventSwitch()
err := evsw.Start()
require.NoError(t, err)
defer evsw.Stop()
defer evsw.Stop() //nolint:errcheck // ignore for tests
doneSum1 := make(chan uint64)
doneSum2 := make(chan uint64)
@@ -327,30 +344,36 @@ func TestRemoveListenersAsync(t *testing.T) {
numbers1 := make(chan uint64, 4)
numbers2 := make(chan uint64, 4)
// subscribe two listener to three events
evsw.AddListenerForEvent("listener1", "event1",
err = evsw.AddListenerForEvent("listener1", "event1",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener1", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener1", "event2",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener1", "event3",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener1", "event3",
func(data EventData) {
numbers1 <- data.(uint64)
})
evsw.AddListenerForEvent("listener2", "event1",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener2", "event1",
func(data EventData) {
numbers2 <- data.(uint64)
})
evsw.AddListenerForEvent("listener2", "event2",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener2", "event2",
func(data EventData) {
numbers2 <- data.(uint64)
})
evsw.AddListenerForEvent("listener2", "event3",
require.NoError(t, err)
err = evsw.AddListenerForEvent("listener2", "event3",
func(data EventData) {
numbers2 <- data.(uint64)
})
require.NoError(t, err)
// collect received events for event1
go sumReceivedNumbers(numbers1, doneSum1)
// collect received events for event2
@@ -361,7 +384,7 @@ func TestRemoveListenersAsync(t *testing.T) {
for k := uint16(0); k < 400; k++ {
listenerNumber := r1.Intn(100) + 3
eventNumber := r1.Intn(3) + 1
go evsw.AddListenerForEvent(fmt.Sprintf("listener%v", listenerNumber),
go evsw.AddListenerForEvent(fmt.Sprintf("listener%v", listenerNumber), //nolint:errcheck // ignore for tests
fmt.Sprintf("event%v", eventNumber),
func(_ EventData) {})
}

View File

@@ -54,7 +54,7 @@ func (l *tmLogger) Info(msg string, keyvals ...interface{}) {
lWithLevel := kitlevel.Info(l.srcLogger)
if err := kitlog.With(lWithLevel, msgKey, msg).Log(keyvals...); err != nil {
errLogger := kitlevel.Error(l.srcLogger)
kitlog.With(errLogger, msgKey, msg).Log("err", err)
kitlog.With(errLogger, msgKey, msg).Log("err", err) //nolint:errcheck // no need to check error again
}
}
@@ -63,7 +63,7 @@ func (l *tmLogger) Debug(msg string, keyvals ...interface{}) {
lWithLevel := kitlevel.Debug(l.srcLogger)
if err := kitlog.With(lWithLevel, msgKey, msg).Log(keyvals...); err != nil {
errLogger := kitlevel.Error(l.srcLogger)
kitlog.With(errLogger, msgKey, msg).Log("err", err)
kitlog.With(errLogger, msgKey, msg).Log("err", err) //nolint:errcheck // no need to check error again
}
}
@@ -72,7 +72,7 @@ func (l *tmLogger) Error(msg string, keyvals ...interface{}) {
lWithLevel := kitlevel.Error(l.srcLogger)
lWithMsg := kitlog.With(lWithLevel, msgKey, msg)
if err := lWithMsg.Log(keyvals...); err != nil {
lWithMsg.Log("err", err)
lWithMsg.Log("err", err) //nolint:errcheck // no need to check error again
}
}

View File

@@ -107,7 +107,7 @@ KeyvalueLoop:
err := enc.EncodeKeyval(keyvals[i], keyvals[i+1])
if err == logfmt.ErrUnsupportedValueType {
enc.EncodeKeyval(keyvals[i], fmt.Sprintf("%+v", keyvals[i+1]))
enc.EncodeKeyval(keyvals[i], fmt.Sprintf("%+v", keyvals[i+1])) //nolint:errcheck // no need to check error again
} else if err != nil {
return err
}

View File

@@ -23,8 +23,9 @@ const (
func TestSubscribe(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription, err := s.Subscribe(ctx, clientID, query.Empty{})
@@ -63,15 +64,18 @@ func TestSubscribe(t *testing.T) {
func TestSubscribeWithCapacity(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
assert.Panics(t, func() {
s.Subscribe(ctx, clientID, query.Empty{}, -1)
_, err = s.Subscribe(ctx, clientID, query.Empty{}, -1)
require.NoError(t, err)
})
assert.Panics(t, func() {
s.Subscribe(ctx, clientID, query.Empty{}, 0)
_, err = s.Subscribe(ctx, clientID, query.Empty{}, 0)
require.NoError(t, err)
})
subscription, err := s.Subscribe(ctx, clientID, query.Empty{}, 1)
require.NoError(t, err)
@@ -83,8 +87,9 @@ func TestSubscribeWithCapacity(t *testing.T) {
func TestSubscribeUnbuffered(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription, err := s.SubscribeUnbuffered(ctx, clientID, query.Empty{})
@@ -113,8 +118,9 @@ func TestSubscribeUnbuffered(t *testing.T) {
func TestSlowClientIsRemovedWithErrOutOfCapacity(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription, err := s.Subscribe(ctx, clientID, query.Empty{})
@@ -130,8 +136,9 @@ func TestSlowClientIsRemovedWithErrOutOfCapacity(t *testing.T) {
func TestDifferentClients(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription1, err := s.Subscribe(ctx, "client-1", query.MustParse("tm.events.type='NewBlock'"))
@@ -171,7 +178,7 @@ func TestSubscribeDuplicateKeys(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
require.NoError(t, s.Start())
defer s.Stop()
defer s.Stop() //nolint:errcheck // ignore for tests
testCases := []struct {
query string
@@ -220,8 +227,9 @@ func TestSubscribeDuplicateKeys(t *testing.T) {
func TestClientSubscribesTwice(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
q := query.MustParse("tm.events.type='NewBlock'")
@@ -244,8 +252,9 @@ func TestClientSubscribesTwice(t *testing.T) {
func TestUnsubscribe(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription, err := s.Subscribe(ctx, clientID, query.MustParse("tm.events.type='NewBlock'"))
@@ -263,11 +272,12 @@ func TestUnsubscribe(t *testing.T) {
func TestClientUnsubscribesTwice(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
_, err := s.Subscribe(ctx, clientID, query.MustParse("tm.events.type='NewBlock'"))
_, err = s.Subscribe(ctx, clientID, query.MustParse("tm.events.type='NewBlock'"))
require.NoError(t, err)
err = s.Unsubscribe(ctx, clientID, query.MustParse("tm.events.type='NewBlock'"))
require.NoError(t, err)
@@ -281,11 +291,12 @@ func TestClientUnsubscribesTwice(t *testing.T) {
func TestResubscribe(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
_, err := s.Subscribe(ctx, clientID, query.Empty{})
_, err = s.Subscribe(ctx, clientID, query.Empty{})
require.NoError(t, err)
err = s.Unsubscribe(ctx, clientID, query.Empty{})
require.NoError(t, err)
@@ -300,8 +311,9 @@ func TestResubscribe(t *testing.T) {
func TestUnsubscribeAll(t *testing.T) {
s := pubsub.NewServer()
s.SetLogger(log.TestingLogger())
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(t, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
subscription1, err := s.Subscribe(ctx, clientID, query.MustParse("tm.events.type='NewBlock'"))
@@ -351,8 +363,9 @@ func Benchmark1000ClientsOneQuery(b *testing.B) { benchmarkNClientsOneQuery(1000
func benchmarkNClients(n int, b *testing.B) {
s := pubsub.NewServer()
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(b, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
for i := 0; i < n; i++ {
@@ -379,18 +392,20 @@ func benchmarkNClients(n int, b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
s.PublishWithEvents(
err = s.PublishWithEvents(
ctx,
"Gamora",
map[string][]string{"abci.Account.Owner": {"Ivan"}, "abci.Invoices.Number": {string(i)}},
)
require.NoError(b, err)
}
}
func benchmarkNClientsOneQuery(n int, b *testing.B) {
s := pubsub.NewServer()
s.Start()
defer s.Stop()
err := s.Start()
require.NoError(b, err)
defer s.Stop() //nolint:errcheck // ignore for tests
ctx := context.Background()
q := query.MustParse("abci.Account.Owner = 'Ivan' AND abci.Invoices.Number = 1")
@@ -414,7 +429,9 @@ func benchmarkNClientsOneQuery(n int, b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
s.PublishWithEvents(ctx, "Gamora", map[string][]string{"abci.Account.Owner": {"Ivan"}, "abci.Invoices.Number": {"1"}})
err = s.PublishWithEvents(ctx, "Gamora", map[string][]string{"abci.Account.Owner": {"Ivan"},
"abci.Invoices.Number": {"1"}})
require.NoError(b, err)
}
}

View File

@@ -18,7 +18,8 @@ func (testService) OnReset() error {
func TestBaseServiceWait(t *testing.T) {
ts := &testService{}
ts.BaseService = *NewBaseService(nil, "TestService", ts)
ts.Start()
err := ts.Start()
require.NoError(t, err)
waitFinished := make(chan struct{})
go func() {
@@ -26,7 +27,7 @@ func TestBaseServiceWait(t *testing.T) {
waitFinished <- struct{}{}
}()
go ts.Stop()
go ts.Stop() //nolint:errcheck // ignore for tests
select {
case <-waitFinished:
@@ -39,12 +40,14 @@ func TestBaseServiceWait(t *testing.T) {
func TestBaseServiceReset(t *testing.T) {
ts := &testService{}
ts.BaseService = *NewBaseService(nil, "TestService", ts)
ts.Start()
err := ts.Start()
require.NoError(t, err)
err := ts.Reset()
err = ts.Reset()
require.Error(t, err, "expected cant reset service error")
ts.Stop()
err = ts.Stop()
require.NoError(t, err)
err = ts.Reset()
require.NoError(t, err)