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  }