github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/localdb/inmemory/inmemory_test.go (about)

     1  //go:build unit || !integration
     2  
     3  package inmemory
     4  
     5  import (
     6  	"context"
     7  	"testing"
     8  
     9  	_ "github.com/filecoin-project/bacalhau/pkg/logger"
    10  	model "github.com/filecoin-project/bacalhau/pkg/model/v1beta1"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestInMemoryDataStore(t *testing.T) {
    15  
    16  	jobId := "12345678" // short ID is 8 chars long
    17  	nodeId := "456"
    18  	shardIndex := 1
    19  
    20  	store, err := NewInMemoryDatastore()
    21  	require.NoError(t, err)
    22  
    23  	err = store.AddJob(context.Background(), &model.Job{
    24  		Metadata: model.Metadata{
    25  			ID: jobId,
    26  		},
    27  	})
    28  	require.NoError(t, err)
    29  
    30  	err = store.AddEvent(context.Background(), jobId, model.JobEvent{
    31  		JobID:        jobId,
    32  		SourceNodeID: nodeId,
    33  		EventName:    model.JobEventBid,
    34  	})
    35  	require.NoError(t, err)
    36  
    37  	err = store.UpdateShardState(context.Background(),
    38  		jobId,
    39  		nodeId,
    40  		shardIndex,
    41  		model.JobShardState{
    42  			NodeID:               nodeId,
    43  			ShardIndex:           shardIndex,
    44  			State:                model.JobStateBidding,
    45  			Status:               "hello",
    46  			VerificationProposal: []byte("apples"),
    47  		},
    48  	)
    49  	require.NoError(t, err)
    50  
    51  	err = store.AddLocalEvent(context.Background(), jobId, model.JobLocalEvent{
    52  		EventName: model.JobLocalEventSelected,
    53  	})
    54  	require.NoError(t, err)
    55  
    56  	job, err := store.GetJob(context.Background(), jobId)
    57  	require.NoError(t, err)
    58  	require.Equal(t, jobId, job.Metadata.ID)
    59  
    60  	// events, err := store.GetJobEvents(context.Background(), jobId)
    61  	// require.NoError(t, err)
    62  	// require.Equal(t, 1, len(events))
    63  	// require.Equal(t, model.JobEventBid, events[0].EventName)
    64  
    65  	localEvents, err := store.GetJobLocalEvents(context.Background(), jobId)
    66  	require.NoError(t, err)
    67  	require.Equal(t, 1, len(localEvents))
    68  	require.Equal(t, model.JobLocalEventSelected, localEvents[0].EventName)
    69  
    70  	jobState, err := store.GetJobState(context.Background(), jobId)
    71  	require.NoError(t, err)
    72  
    73  	nodeState, ok := jobState.Nodes[nodeId]
    74  	require.True(t, ok)
    75  
    76  	shardState, ok := nodeState.Shards[shardIndex]
    77  	require.True(t, ok)
    78  
    79  	require.Equal(t, model.JobStateBidding, shardState.State)
    80  	require.Equal(t, "hello", shardState.Status)
    81  }