github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/compute/bidstrategy/networking_strategy_test.go (about) 1 //go:build unit || !integration 2 3 package bidstrategy 4 5 import ( 6 "context" 7 "fmt" 8 "testing" 9 10 "github.com/filecoin-project/bacalhau/pkg/model" 11 "github.com/stretchr/testify/require" 12 ) 13 14 type networkingStrategyTestCase struct { 15 accept bool 16 job_networking model.NetworkConfig 17 should_bid bool 18 } 19 20 func (test networkingStrategyTestCase) String() string { 21 return fmt.Sprintf( 22 "should bid is %t when job requires %s and strategy accepts networking is %t", 23 test.should_bid, 24 test.job_networking.Type, 25 test.accept, 26 ) 27 } 28 29 var networkingStrategyTestCases = []networkingStrategyTestCase{ 30 {false, model.NetworkConfig{Type: model.NetworkNone}, true}, 31 {false, model.NetworkConfig{Type: model.NetworkFull}, false}, 32 {true, model.NetworkConfig{Type: model.NetworkNone}, true}, 33 {true, model.NetworkConfig{Type: model.NetworkFull}, true}, 34 } 35 36 func TestNetworkingStrategy(t *testing.T) { 37 for _, test := range networkingStrategyTestCases { 38 strategy := NewNetworkingStrategy(test.accept) 39 request := BidStrategyRequest{ 40 Job: model.Job{ 41 Spec: model.Spec{Network: test.job_networking}, 42 }, 43 } 44 45 t.Run("ShouldBid/"+test.String(), func(t *testing.T) { 46 response, err := strategy.ShouldBid(context.Background(), request) 47 require.NoError(t, err) 48 require.Equal(t, test.should_bid, response.ShouldBid) 49 }) 50 51 t.Run("ShouldBidBasedOnUsage/"+test.String(), func(t *testing.T) { 52 response, err := strategy.ShouldBidBasedOnUsage(context.Background(), request, model.ResourceUsageData{}) 53 require.NoError(t, err) 54 require.Equal(t, test.should_bid, response.ShouldBid) 55 }) 56 } 57 }