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  }