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 }