github.com/vipernet-xyz/tm@v0.34.24/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  }