github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/compute/bidstrategy/timeout_strategy_test.go (about) 1 //go:build unit || !integration 2 3 package bidstrategy 4 5 import ( 6 "context" 7 "testing" 8 9 "github.com/filecoin-project/bacalhau/pkg/model" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestTimeoutStrategy(t *testing.T) { 15 tests := []struct { 16 name string 17 params TimeoutStrategyParams 18 request BidStrategyRequest 19 shouldBid bool 20 reason string 21 }{ 22 { 23 name: "timeout-too-large", 24 params: TimeoutStrategyParams{ 25 JobExecutionTimeoutClientIDBypassList: []string{"client"}, 26 }, 27 request: BidStrategyRequest{ 28 Job: model.Job{ 29 Metadata: model.Metadata{ClientID: "client"}, 30 Spec: model.Spec{Timeout: 9223372036.1}, 31 }, 32 }, 33 shouldBid: false, 34 reason: "job timeout 9223372036.1 exceeds maximum possible value", 35 }, 36 { 37 name: "client-skip-list", 38 params: TimeoutStrategyParams{ 39 JobExecutionTimeoutClientIDBypassList: []string{"client"}, 40 }, 41 request: BidStrategyRequest{ 42 Job: model.Job{ 43 Metadata: model.Metadata{ClientID: "client"}, 44 Spec: model.Spec{Timeout: 9223372036}, 45 }, 46 }, 47 shouldBid: true, 48 reason: "", 49 }, 50 } 51 52 for _, test := range tests { 53 t.Run(test.name, func(t *testing.T) { 54 subject := NewTimeoutStrategy(test.params) 55 56 response, err := subject.ShouldBid(context.Background(), test.request) 57 require.NoError(t, err) 58 59 assert.Equal(t, test.shouldBid, response.ShouldBid) 60 assert.Equal(t, test.reason, response.Reason) 61 }) 62 } 63 }