github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/compute/store/test/active_executions_test.go (about)

     1  package test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/filecoin-project/bacalhau/pkg/compute/store"
     8  	"github.com/filecoin-project/bacalhau/pkg/compute/store/inmemory"
     9  	"github.com/filecoin-project/bacalhau/pkg/model"
    10  	"github.com/google/uuid"
    11  	"github.com/stretchr/testify/suite"
    12  )
    13  
    14  type Suite struct {
    15  	suite.Suite
    16  	executionStore store.ExecutionStore
    17  	execution      store.Execution
    18  }
    19  
    20  func (s *Suite) SetupTest() {
    21  	s.executionStore = inmemory.NewStore()
    22  	s.execution = newExecution()
    23  }
    24  
    25  func TestSuite(t *testing.T) {
    26  	suite.Run(t, new(Suite))
    27  }
    28  
    29  func (s *Suite) TestGetActiveExecution_Single() {
    30  	ctx := context.Background()
    31  	err := s.executionStore.CreateExecution(ctx, s.execution)
    32  	s.NoError(err)
    33  
    34  	active, err := store.GetActiveExecution(ctx, s.executionStore, s.execution.Shard.ID())
    35  	s.NoError(err)
    36  	s.Equal(s.execution, active)
    37  }
    38  
    39  func (s *Suite) TestGetActiveExecution_Multiple() {
    40  	ctx := context.Background()
    41  
    42  	// create a newer execution with same shard as the previous one
    43  	newerExecution := s.execution
    44  	newerExecution.ID = uuid.NewString()
    45  	newerExecution.Shard = s.execution.Shard
    46  	newerExecution.UpdateTime = s.execution.UpdateTime.Add(1)
    47  
    48  	err := s.executionStore.CreateExecution(ctx, s.execution)
    49  	s.NoError(err)
    50  
    51  	err = s.executionStore.CreateExecution(ctx, newerExecution)
    52  	s.NoError(err)
    53  
    54  	active, err := store.GetActiveExecution(ctx, s.executionStore, s.execution.Shard.ID())
    55  	s.NoError(err)
    56  	s.Equal(newerExecution, active)
    57  }
    58  
    59  func (s *Suite) TestGetActiveExecution_DoestExist() {
    60  	_, err := store.GetActiveExecution(context.Background(), s.executionStore, s.execution.Shard.ID())
    61  	s.ErrorAs(err, &store.ErrExecutionsNotFoundForShard{})
    62  }
    63  
    64  func newExecution() store.Execution {
    65  	return *store.NewExecution(
    66  		uuid.NewString(),
    67  		model.JobShard{
    68  			Job: &model.Job{
    69  				Metadata: model.Metadata{
    70  					ID: uuid.NewString(),
    71  				},
    72  			},
    73  			Index: 1,
    74  		},
    75  		"nodeID-1",
    76  		model.ResourceUsageData{
    77  			CPU:    1,
    78  			Memory: 2,
    79  		})
    80  }