|
@ -1,49 +0,0 @@ |
|
|
package events |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
|
"context" |
|
|
|
|
|
"testing" |
|
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
|
"github.com/tendermint/tendermint/libs/log" |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func TestEventCache_Flush(t *testing.T) { |
|
|
|
|
|
ctx, cancel := context.WithCancel(context.Background()) |
|
|
|
|
|
defer cancel() |
|
|
|
|
|
|
|
|
|
|
|
logger := log.NewTestingLogger(t) |
|
|
|
|
|
evsw := NewEventSwitch(logger) |
|
|
|
|
|
err := evsw.Start(ctx) |
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
|
|
err = evsw.AddListenerForEvent("nothingness", "", func(_ context.Context, data EventData) error { |
|
|
|
|
|
// Check we are not initializing 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") |
|
|
|
|
|
return nil |
|
|
|
|
|
}) |
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
|
|
evc := NewEventCache(evsw) |
|
|
|
|
|
evc.Flush(ctx) |
|
|
|
|
|
// Check after reset
|
|
|
|
|
|
evc.Flush(ctx) |
|
|
|
|
|
fail := true |
|
|
|
|
|
pass := false |
|
|
|
|
|
err = evsw.AddListenerForEvent("somethingness", "something", func(_ context.Context, data EventData) error { |
|
|
|
|
|
if fail { |
|
|
|
|
|
require.FailNow(t, "Shouldn't see a message until flushed") |
|
|
|
|
|
} |
|
|
|
|
|
pass = true |
|
|
|
|
|
return nil |
|
|
|
|
|
}) |
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
|
|
evc.FireEvent("something", struct{ int }{1}) |
|
|
|
|
|
evc.FireEvent("something", struct{ int }{2}) |
|
|
|
|
|
evc.FireEvent("something", struct{ int }{3}) |
|
|
|
|
|
fail = false |
|
|
|
|
|
evc.Flush(ctx) |
|
|
|
|
|
assert.True(t, pass) |
|
|
|
|
|
} |
|
|
|