tendermint/common/service_test.go

55 lines
893 B
Go
Raw Normal View History

2016-10-28 12:09:22 -07:00
package common
import (
"testing"
2017-11-27 21:42:36 -08:00
"time"
"github.com/stretchr/testify/require"
2016-10-28 12:09:22 -07:00
)
2017-11-27 21:42:36 -08:00
type testService struct {
BaseService
}
2016-10-28 12:09:22 -07:00
2017-11-27 21:42:36 -08:00
func (testService) OnReset() error {
return nil
}
func TestBaseServiceWait(t *testing.T) {
ts := &testService{}
2016-10-28 12:09:22 -07:00
ts.BaseService = *NewBaseService(nil, "TestService", ts)
ts.Start()
2017-11-27 21:42:36 -08:00
waitFinished := make(chan struct{})
2016-10-28 12:09:22 -07:00
go func() {
2017-11-27 21:42:36 -08:00
ts.Wait()
waitFinished <- struct{}{}
2016-10-28 12:09:22 -07:00
}()
2017-11-27 21:42:36 -08:00
go ts.Stop()
select {
case <-waitFinished:
// all good
case <-time.After(100 * time.Millisecond):
t.Fatal("expected Wait() to finish within 100 ms.")
2016-10-28 12:09:22 -07:00
}
2017-11-27 21:42:36 -08:00
}
func TestBaseServiceReset(t *testing.T) {
ts := &testService{}
ts.BaseService = *NewBaseService(nil, "TestService", ts)
ts.Start()
err := ts.Reset()
require.Error(t, err, "expected cant reset service error")
ts.Stop()
err = ts.Reset()
require.NoError(t, err)
2016-10-28 12:09:22 -07:00
2017-11-27 21:42:36 -08:00
err = ts.Start()
require.NoError(t, err)
2016-10-28 12:09:22 -07:00
}