github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/model/v1beta1/task_test.go (about)

     1  package v1beta1
     2  
     3  import (
     4  	"embed"
     5  	"path"
     6  	"testing"
     7  
     8  	"github.com/ipld/go-ipld-prime/codec/json"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  //go:embed tasks/*.json
    13  var tests embed.FS
    14  
    15  func TestCanUnmarshal(t *testing.T) {
    16  	entries, err := tests.ReadDir("tasks")
    17  	require.NoError(t, err)
    18  
    19  	for _, entry := range entries {
    20  		t.Run(entry.Name(), func(t *testing.T) {
    21  			bytes, err := tests.ReadFile(path.Join("tasks", entry.Name()))
    22  			require.NoError(t, err)
    23  
    24  			task, err := UnmarshalIPLD[Task](bytes, json.Decode, UCANTaskSchema)
    25  			require.NoError(t, err)
    26  
    27  			_, err = task.ToSpec()
    28  			require.NoError(t, err)
    29  		})
    30  	}
    31  }
    32  
    33  func TestConfig(t *testing.T) {
    34  	bytes, err := tests.ReadFile("tasks/task_with_config.json")
    35  	require.NoError(t, err)
    36  
    37  	task, err := UnmarshalIPLD[Task](bytes, json.Decode, UCANTaskSchema)
    38  	require.NoError(t, err)
    39  
    40  	spec, err := task.ToSpec()
    41  	require.NoError(t, err)
    42  
    43  	require.Equal(t, VerifierNoop, spec.Verifier)
    44  	require.Equal(t, PublisherIpfs, spec.Publisher)
    45  	require.Equal(t, []string{"hello"}, spec.Annotations)
    46  	require.Equal(t, "1m", spec.Resources.CPU)
    47  	require.Equal(t, "1GB", spec.Resources.Disk)
    48  	require.Equal(t, "1GB", spec.Resources.Memory)
    49  	require.Equal(t, "0", spec.Resources.GPU)
    50  	require.Equal(t, 300.0, spec.Timeout)
    51  	require.Equal(t, false, spec.DoNotTrack)
    52  }