github.com/Oyster-zx/tendermint@v0.34.24-fork/libs/service/service_test.go (about) 1 package service 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 type testService struct { 11 BaseService 12 } 13 14 func (testService) OnReset() error { 15 return nil 16 } 17 18 func TestBaseServiceWait(t *testing.T) { 19 ts := &testService{} 20 ts.BaseService = *NewBaseService(nil, "TestService", ts) 21 err := ts.Start() 22 require.NoError(t, err) 23 24 waitFinished := make(chan struct{}) 25 go func() { 26 ts.Wait() 27 waitFinished <- struct{}{} 28 }() 29 30 go ts.Stop() //nolint:errcheck // ignore for tests 31 32 select { 33 case <-waitFinished: 34 // all good 35 case <-time.After(100 * time.Millisecond): 36 t.Fatal("expected Wait() to finish within 100 ms.") 37 } 38 } 39 40 func TestBaseServiceReset(t *testing.T) { 41 ts := &testService{} 42 ts.BaseService = *NewBaseService(nil, "TestService", ts) 43 err := ts.Start() 44 require.NoError(t, err) 45 46 err = ts.Reset() 47 require.Error(t, err, "expected cant reset service error") 48 49 err = ts.Stop() 50 require.NoError(t, err) 51 52 err = ts.Reset() 53 require.NoError(t, err) 54 55 err = ts.Start() 56 require.NoError(t, err) 57 }