github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/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 t.Parallel() 20 21 ts := &testService{} 22 ts.BaseService = *NewBaseService(nil, "TestService", ts) 23 ts.Start() 24 25 waitFinished := make(chan struct{}) 26 go func() { 27 ts.Wait() 28 waitFinished <- struct{}{} 29 }() 30 31 go ts.Stop() 32 33 select { 34 case <-waitFinished: 35 // all good 36 case <-time.After(100 * time.Millisecond): 37 t.Fatal("expected Wait() to finish within 100 ms.") 38 } 39 } 40 41 func TestBaseServiceReset(t *testing.T) { 42 t.Parallel() 43 44 ts := &testService{} 45 ts.BaseService = *NewBaseService(nil, "TestService", ts) 46 ts.Start() 47 48 err := ts.Reset() 49 require.Error(t, err, "expected cant reset service error") 50 51 ts.Stop() 52 53 err = ts.Reset() 54 require.NoError(t, err) 55 56 err = ts.Start() 57 require.NoError(t, err) 58 }